From: Wayne Davison Date: Wed, 10 Aug 2022 00:51:00 +0000 (-0700) Subject: Fix handling of a character class with an escaped closing bracket. X-Git-Tag: v3.2.5~8 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=4c0a4067df2516ce50e12a7d3ae572275fa9fc0b;p=thirdparty%2Frsync.git Fix handling of a character class with an escaped closing bracket. --- diff --git a/exclude.c b/exclude.c index ea1aa495..e5774420 100644 --- a/exclude.c +++ b/exclude.c @@ -424,9 +424,10 @@ void add_implied_include(const char *arg, int skip_daemon_module) for (cp = arg; *cp; ) { switch (*cp) { case '\\': - if (cp[1] == ']') - cp++; /* A \] in a filter might cause a problem w/o wildcards. */ - else if (!strchr("*[?", cp[1])) { + if (cp[1] == ']') { + if (!saw_wild) + cp++; /* A \] in a non-wild filter causes a problem, so drop the \ . */ + } else if (!strchr("*[?", cp[1])) { backslash_cnt++; if (saw_wild) *p++ = '\\';