BASH PATCH REPORT ================= Bash-Release: 4.2 Patch-ID: bash42-004 Bug-Reported-by: Mike Frysinger Bug-Reference-ID: <201102182106.17834.vapier@gentoo.org> Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2011-02/msg00222.html Bug-Description: When used in contexts where word splitting and quote removal were not performed, such as pattern removal or pattern substitution, empty strings (either literal or resulting from quoted variables that were unset or null) were not matched correctly, resulting in failure. Patch (apply with `patch -p0'): *** ../bash-4.2-patched/subst.c 2011-01-02 16:12:51.000000000 -0500 --- ./subst.c 2011-02-18 22:30:13.000000000 -0500 *************** *** 3373,3379 **** if (string == 0 || *string == '\0') return (WORD_LIST *)NULL; ! td.flags = 0; td.word = string; tresult = call_expand_word_internal (&td, quoted, 1, dollar_at_p, has_dollar_at); return (tresult); --- 3373,3379 ---- if (string == 0 || *string == '\0') return (WORD_LIST *)NULL; ! td.flags = W_NOSPLIT2; /* no splitting, remove "" and '' */ td.word = string; tresult = call_expand_word_internal (&td, quoted, 1, dollar_at_p, has_dollar_at); return (tresult); *** ../bash-4.2-patched/patchlevel.h Sat Jun 12 20:14:48 2010 --- ./patchlevel.h Thu Feb 24 21:41:34 2011 *************** *** 26,30 **** looks for to find the patch level (for the sccs version string). */ ! #define PATCHLEVEL 3 #endif /* _PATCHLEVEL_H_ */ --- 26,30 ---- looks for to find the patch level (for the sccs version string). */ ! #define PATCHLEVEL 4 #endif /* _PATCHLEVEL_H_ */