diff --git a/vsftpd-path-normalize.patch b/vsftpd-path-normalize.patch index 73e94d5..ef663bb 100644 --- a/vsftpd-path-normalize.patch +++ b/vsftpd-path-normalize.patch @@ -116,11 +116,48 @@ Index: vsftpd-3.0.2/ls.c if (do_stat) { /* lstat() the file. Of course there's a race condition - the -@@ -249,6 +249,7 @@ vsf_filename_passes_filter(const struct +@@ -239,6 +239,7 @@ vsf_filename_passes_filter(const struct + * for /a/?/c will not. + */ + struct mystr filter_remain_str = INIT_MYSTR; ++ struct mystr basic_name_str = INIT_MYSTR; + struct mystr name_remain_str = INIT_MYSTR; + struct mystr temp_str = INIT_MYSTR; + struct mystr brace_list_str = INIT_MYSTR; +@@ -249,27 +250,29 @@ vsf_filename_passes_filter(const struct int matched = 0; str_copy(&filter_remain_str, p_filter_str); -+ str_normalize_filepath(p_filename_str); ++ str_copy(&basic_name_str, p_filename_str); ++ str_normalize_filepath(&basic_name_str); - if (!str_isempty (&filter_remain_str) && !str_isempty(p_filename_str)) { +- if (!str_isempty (&filter_remain_str) && !str_isempty(p_filename_str)) { ++ if (!str_isempty (&filter_remain_str) && !str_isempty(&basic_name_str)) { if (str_get_char_at(p_filter_str, 0) == '/') { +- if (str_get_char_at(p_filename_str, 0) != '/') { ++ if (str_get_char_at(&basic_name_str, 0) != '/') { + str_getcwd (&name_remain_str); + + if (str_getlen(&name_remain_str) > 1) /* cwd != root dir */ + str_append_char (&name_remain_str, '/'); + +- str_append_str (&name_remain_str, p_filename_str); ++ str_append_str (&name_remain_str, &basic_name_str); + } + else +- str_copy (&name_remain_str, p_filename_str); ++ str_copy (&name_remain_str, &basic_name_str); + } else { + if (str_get_char_at(p_filter_str, 0) != '{') +- str_basename (&name_remain_str, p_filename_str); ++ str_basename (&name_remain_str, &basic_name_str); + else +- str_copy (&name_remain_str, p_filename_str); ++ str_copy (&name_remain_str, &basic_name_str); + } + } else +- str_copy(&name_remain_str, p_filename_str); ++ str_copy(&name_remain_str, &basic_name_str); + + while (!str_isempty(&filter_remain_str) && *iters < VSFTP_MATCHITERS_MAX) + { diff --git a/vsftpd.changes b/vsftpd.changes index 3e399a1..c23d1b6 100644 --- a/vsftpd.changes +++ b/vsftpd.changes @@ -1,3 +1,9 @@ +------------------------------------------------------------------- +Fri Apr 17 16:35:14 UTC 2015 - tchvatal@suse.com + +- Fix hide_file option wrt bnc#927612: + * vsftpd-path-normalize.patch + ------------------------------------------------------------------- Sun Apr 5 10:25:50 UTC 2015 - tchvatal@suse.com