Loading package/bash/bash31-015 0 → 100644 +106 −0 Original line number Diff line number Diff line BASH PATCH REPORT ================= Bash-Release: 3.1 Patch-ID: bash31-015 Bug-Reported-by: Benoit Vila Bug-Reference-ID: <43FCA614.1090108@free.fr> Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2006-02/msg00058.html Bug-Description: A problem with the extended globbing code prevented dots from matching filenames when used in some extended matching patterns. Patch: *** bash-3.1/lib/glob/sm_loop.c Sun Oct 16 21:21:04 2005 --- bash-3.1/lib/glob/sm_loop.c Mon Feb 27 17:18:43 2006 *************** *** 639,643 **** CHAR *pnext; /* pointer to next sub-pattern */ CHAR *srest; /* pointer to rest of string */ ! int m1, m2; #if DEBUG_MATCHING --- 638,642 ---- CHAR *pnext; /* pointer to next sub-pattern */ CHAR *srest; /* pointer to rest of string */ ! int m1, m2, xflags; /* xflags = flags passed to recursive matches */ #if DEBUG_MATCHING *************** *** 645,648 **** --- 644,648 ---- fprintf(stderr, "extmatch: s = %s; se = %s\n", s, se); fprintf(stderr, "extmatch: p = %s; pe = %s\n", p, pe); + fprintf(stderr, "extmatch: flags = %d\n", flags); #endif *************** *** 678,683 **** multiple matches of the pattern. */ if (m1) ! m2 = (GMATCH (srest, se, prest, pe, flags) == 0) || ! (s != srest && GMATCH (srest, se, p - 1, pe, flags) == 0); if (m1 && m2) return (0); --- 678,687 ---- multiple matches of the pattern. */ if (m1) ! { ! /* if srest > s, we are not at start of string */ ! xflags = (srest > s) ? (flags & ~FNM_PERIOD) : flags; ! m2 = (GMATCH (srest, se, prest, pe, xflags) == 0) || ! (s != srest && GMATCH (srest, se, p - 1, pe, xflags) == 0); ! } if (m1 && m2) return (0); *************** *** 705,710 **** for ( ; srest <= se; srest++) { if (GMATCH (s, srest, psub, pnext - 1, flags) == 0 && ! GMATCH (srest, se, prest, pe, flags) == 0) return (0); } --- 709,716 ---- for ( ; srest <= se; srest++) { + /* if srest > s, we are not at start of string */ + xflags = (srest > s) ? (flags & ~FNM_PERIOD) : flags; if (GMATCH (s, srest, psub, pnext - 1, flags) == 0 && ! GMATCH (srest, se, prest, pe, xflags) == 0) return (0); } *************** *** 727,731 **** break; } ! if (m1 == 0 && GMATCH (srest, se, prest, pe, flags) == 0) return (0); } --- 733,739 ---- break; } ! /* if srest > s, we are not at start of string */ ! xflags = (srest > s) ? (flags & ~FNM_PERIOD) : flags; ! if (m1 == 0 && GMATCH (srest, se, prest, pe, xflags) == 0) return (0); } *** bash-3.1/patchlevel.h Wed Jul 20 13:58:20 2005 --- bash-3.1/patchlevel.h Wed Dec 7 13:48:42 2005 *************** *** 26,30 **** looks for to find the patch level (for the sccs version string). */ ! #define PATCHLEVEL 14 #endif /* _PATCHLEVEL_H_ */ --- 26,30 ---- looks for to find the patch level (for the sccs version string). */ ! #define PATCHLEVEL 15 #endif /* _PATCHLEVEL_H_ */ package/bash/bash31-016 0 → 100644 +51 −0 Original line number Diff line number Diff line BASH PATCH REPORT ================= Bash-Release: 3.1 Patch-ID: bash31-016 Bug-Reported-by: Nikita Danilov <nikita@clusterfs.com> Bug-Reference-ID: <17397.51015.769854.541057@gargle.gargle.HOWL> Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2006-02/msg00064.html Bug-Description: Bash will dump core when attempting to perform globbing in directories with very large numbers of files. Patch: *** bash-3.1/lib/glob/glob.c Thu Mar 24 12:42:27 2005 --- bash-3.1/lib/glob/glob.c Fri Mar 3 16:54:12 2006 *************** *** 361,364 **** --- 361,365 ---- firstmalloc = 0; + nalloca = 0; /* If PAT is empty, skip the loop, but return one (empty) filename. */ *************** *** 547,550 **** --- 551,556 ---- tmplink = lastlink; } + else + tmplink = 0; free (lastlink->name); lastlink = lastlink->next; *** bash-3.1/patchlevel.h Wed Jul 20 13:58:20 2005 --- bash-3.1/patchlevel.h Wed Dec 7 13:48:42 2005 *************** *** 26,30 **** looks for to find the patch level (for the sccs version string). */ ! #define PATCHLEVEL 15 #endif /* _PATCHLEVEL_H_ */ --- 26,30 ---- looks for to find the patch level (for the sccs version string). */ ! #define PATCHLEVEL 16 #endif /* _PATCHLEVEL_H_ */ package/bash/bash31-017 0 → 100644 +131 −0 Original line number Diff line number Diff line BASH PATCH REPORT ================= Bash-Release: 3.1 Patch-ID: bash31-017 Bug-Reported-by: syphir@syphir.sytes.net Bug-Reference-ID: <442421F5.3010105@syphir.sytes.net> Bug-Reference-URL: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=358831 Bug-Description: Array expansion fails with an arithmetic syntax error when the subscript appears within double quotes. For example: ${a["4"]}. Patch: *** bash-3.1/subst.c Wed Apr 12 08:47:08 2006 --- bash-3.1/subst.c Wed Apr 12 08:49:02 2006 *************** *** 2576,2579 **** --- 2576,2586 ---- } + char * + expand_arith_string (string, quoted) + char *string; + { + return (expand_string_if_necessary (string, quoted, expand_string)); + } + #if defined (COND_COMMAND) /* Just remove backslashes in STRING. Returns a new string. */ *************** *** 5249,5253 **** t = (char *)0; ! temp1 = expand_string_if_necessary (substr, Q_DOUBLE_QUOTES, expand_string); *e1p = evalexp (temp1, &expok); free (temp1); --- 5256,5260 ---- t = (char *)0; ! temp1 = expand_arith_string (substr, Q_DOUBLE_QUOTES); *e1p = evalexp (temp1, &expok); free (temp1); *************** *** 5294,5298 **** t++; temp2 = savestring (t); ! temp1 = expand_string_if_necessary (temp2, Q_DOUBLE_QUOTES, expand_string); free (temp2); t[-1] = ':'; --- 5301,5305 ---- t++; temp2 = savestring (t); ! temp1 = expand_arith_string (temp2, Q_DOUBLE_QUOTES); free (temp2); t[-1] = ':'; *************** *** 6436,6440 **** /* Expand variables found inside the expression. */ ! temp1 = expand_string_if_necessary (temp2, Q_DOUBLE_QUOTES, expand_string); free (temp2); --- 6443,6447 ---- /* Expand variables found inside the expression. */ ! temp1 = expand_arith_string (temp2, Q_DOUBLE_QUOTES); free (temp2); *************** *** 6478,6482 **** /* Do initial variable expansion. */ ! temp1 = expand_string_if_necessary (temp, Q_DOUBLE_QUOTES, expand_string); goto arithsub; --- 6485,6489 ---- /* Do initial variable expansion. */ ! temp1 = expand_arith_string (temp, Q_DOUBLE_QUOTES); goto arithsub; *** bash-3.1/subst.h Sun Nov 7 15:12:28 2004 --- bash-3.1/subst.h Mon Mar 27 09:10:38 2006 *************** *** 152,155 **** --- 152,158 ---- extern char *expand_assignment_string_to_string __P((char *, int)); + /* Expand an arithmetic expression string */ + extern char *expand_arith_string __P((char *, int)); + /* De-quoted quoted characters in STRING. */ extern char *dequote_string __P((char *)); *** ../bash-3.1-patched/arrayfunc.c Mon Jul 4 20:25:58 2005 --- arrayfunc.c Mon Mar 27 09:10:47 2006 *************** *** 593,601 **** strncpy (exp, s, len - 1); exp[len - 1] = '\0'; ! #if 0 ! t = expand_string_to_string (exp, 0); ! #else ! t = expand_string_to_string (exp, Q_DOUBLE_QUOTES); ! #endif this_command_name = (char *)NULL; val = evalexp (t, &expok); --- 591,595 ---- strncpy (exp, s, len - 1); exp[len - 1] = '\0'; ! t = expand_arith_string (exp, 0); this_command_name = (char *)NULL; val = evalexp (t, &expok); *** bash-3.1/patchlevel.h Wed Jul 20 13:58:20 2005 --- bash-3.1/patchlevel.h Wed Dec 7 13:48:42 2005 *************** *** 26,30 **** looks for to find the patch level (for the sccs version string). */ ! #define PATCHLEVEL 16 #endif /* _PATCHLEVEL_H_ */ --- 26,30 ---- looks for to find the patch level (for the sccs version string). */ ! #define PATCHLEVEL 17 #endif /* _PATCHLEVEL_H_ */ Loading
package/bash/bash31-015 0 → 100644 +106 −0 Original line number Diff line number Diff line BASH PATCH REPORT ================= Bash-Release: 3.1 Patch-ID: bash31-015 Bug-Reported-by: Benoit Vila Bug-Reference-ID: <43FCA614.1090108@free.fr> Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2006-02/msg00058.html Bug-Description: A problem with the extended globbing code prevented dots from matching filenames when used in some extended matching patterns. Patch: *** bash-3.1/lib/glob/sm_loop.c Sun Oct 16 21:21:04 2005 --- bash-3.1/lib/glob/sm_loop.c Mon Feb 27 17:18:43 2006 *************** *** 639,643 **** CHAR *pnext; /* pointer to next sub-pattern */ CHAR *srest; /* pointer to rest of string */ ! int m1, m2; #if DEBUG_MATCHING --- 638,642 ---- CHAR *pnext; /* pointer to next sub-pattern */ CHAR *srest; /* pointer to rest of string */ ! int m1, m2, xflags; /* xflags = flags passed to recursive matches */ #if DEBUG_MATCHING *************** *** 645,648 **** --- 644,648 ---- fprintf(stderr, "extmatch: s = %s; se = %s\n", s, se); fprintf(stderr, "extmatch: p = %s; pe = %s\n", p, pe); + fprintf(stderr, "extmatch: flags = %d\n", flags); #endif *************** *** 678,683 **** multiple matches of the pattern. */ if (m1) ! m2 = (GMATCH (srest, se, prest, pe, flags) == 0) || ! (s != srest && GMATCH (srest, se, p - 1, pe, flags) == 0); if (m1 && m2) return (0); --- 678,687 ---- multiple matches of the pattern. */ if (m1) ! { ! /* if srest > s, we are not at start of string */ ! xflags = (srest > s) ? (flags & ~FNM_PERIOD) : flags; ! m2 = (GMATCH (srest, se, prest, pe, xflags) == 0) || ! (s != srest && GMATCH (srest, se, p - 1, pe, xflags) == 0); ! } if (m1 && m2) return (0); *************** *** 705,710 **** for ( ; srest <= se; srest++) { if (GMATCH (s, srest, psub, pnext - 1, flags) == 0 && ! GMATCH (srest, se, prest, pe, flags) == 0) return (0); } --- 709,716 ---- for ( ; srest <= se; srest++) { + /* if srest > s, we are not at start of string */ + xflags = (srest > s) ? (flags & ~FNM_PERIOD) : flags; if (GMATCH (s, srest, psub, pnext - 1, flags) == 0 && ! GMATCH (srest, se, prest, pe, xflags) == 0) return (0); } *************** *** 727,731 **** break; } ! if (m1 == 0 && GMATCH (srest, se, prest, pe, flags) == 0) return (0); } --- 733,739 ---- break; } ! /* if srest > s, we are not at start of string */ ! xflags = (srest > s) ? (flags & ~FNM_PERIOD) : flags; ! if (m1 == 0 && GMATCH (srest, se, prest, pe, xflags) == 0) return (0); } *** bash-3.1/patchlevel.h Wed Jul 20 13:58:20 2005 --- bash-3.1/patchlevel.h Wed Dec 7 13:48:42 2005 *************** *** 26,30 **** looks for to find the patch level (for the sccs version string). */ ! #define PATCHLEVEL 14 #endif /* _PATCHLEVEL_H_ */ --- 26,30 ---- looks for to find the patch level (for the sccs version string). */ ! #define PATCHLEVEL 15 #endif /* _PATCHLEVEL_H_ */
package/bash/bash31-016 0 → 100644 +51 −0 Original line number Diff line number Diff line BASH PATCH REPORT ================= Bash-Release: 3.1 Patch-ID: bash31-016 Bug-Reported-by: Nikita Danilov <nikita@clusterfs.com> Bug-Reference-ID: <17397.51015.769854.541057@gargle.gargle.HOWL> Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2006-02/msg00064.html Bug-Description: Bash will dump core when attempting to perform globbing in directories with very large numbers of files. Patch: *** bash-3.1/lib/glob/glob.c Thu Mar 24 12:42:27 2005 --- bash-3.1/lib/glob/glob.c Fri Mar 3 16:54:12 2006 *************** *** 361,364 **** --- 361,365 ---- firstmalloc = 0; + nalloca = 0; /* If PAT is empty, skip the loop, but return one (empty) filename. */ *************** *** 547,550 **** --- 551,556 ---- tmplink = lastlink; } + else + tmplink = 0; free (lastlink->name); lastlink = lastlink->next; *** bash-3.1/patchlevel.h Wed Jul 20 13:58:20 2005 --- bash-3.1/patchlevel.h Wed Dec 7 13:48:42 2005 *************** *** 26,30 **** looks for to find the patch level (for the sccs version string). */ ! #define PATCHLEVEL 15 #endif /* _PATCHLEVEL_H_ */ --- 26,30 ---- looks for to find the patch level (for the sccs version string). */ ! #define PATCHLEVEL 16 #endif /* _PATCHLEVEL_H_ */
package/bash/bash31-017 0 → 100644 +131 −0 Original line number Diff line number Diff line BASH PATCH REPORT ================= Bash-Release: 3.1 Patch-ID: bash31-017 Bug-Reported-by: syphir@syphir.sytes.net Bug-Reference-ID: <442421F5.3010105@syphir.sytes.net> Bug-Reference-URL: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=358831 Bug-Description: Array expansion fails with an arithmetic syntax error when the subscript appears within double quotes. For example: ${a["4"]}. Patch: *** bash-3.1/subst.c Wed Apr 12 08:47:08 2006 --- bash-3.1/subst.c Wed Apr 12 08:49:02 2006 *************** *** 2576,2579 **** --- 2576,2586 ---- } + char * + expand_arith_string (string, quoted) + char *string; + { + return (expand_string_if_necessary (string, quoted, expand_string)); + } + #if defined (COND_COMMAND) /* Just remove backslashes in STRING. Returns a new string. */ *************** *** 5249,5253 **** t = (char *)0; ! temp1 = expand_string_if_necessary (substr, Q_DOUBLE_QUOTES, expand_string); *e1p = evalexp (temp1, &expok); free (temp1); --- 5256,5260 ---- t = (char *)0; ! temp1 = expand_arith_string (substr, Q_DOUBLE_QUOTES); *e1p = evalexp (temp1, &expok); free (temp1); *************** *** 5294,5298 **** t++; temp2 = savestring (t); ! temp1 = expand_string_if_necessary (temp2, Q_DOUBLE_QUOTES, expand_string); free (temp2); t[-1] = ':'; --- 5301,5305 ---- t++; temp2 = savestring (t); ! temp1 = expand_arith_string (temp2, Q_DOUBLE_QUOTES); free (temp2); t[-1] = ':'; *************** *** 6436,6440 **** /* Expand variables found inside the expression. */ ! temp1 = expand_string_if_necessary (temp2, Q_DOUBLE_QUOTES, expand_string); free (temp2); --- 6443,6447 ---- /* Expand variables found inside the expression. */ ! temp1 = expand_arith_string (temp2, Q_DOUBLE_QUOTES); free (temp2); *************** *** 6478,6482 **** /* Do initial variable expansion. */ ! temp1 = expand_string_if_necessary (temp, Q_DOUBLE_QUOTES, expand_string); goto arithsub; --- 6485,6489 ---- /* Do initial variable expansion. */ ! temp1 = expand_arith_string (temp, Q_DOUBLE_QUOTES); goto arithsub; *** bash-3.1/subst.h Sun Nov 7 15:12:28 2004 --- bash-3.1/subst.h Mon Mar 27 09:10:38 2006 *************** *** 152,155 **** --- 152,158 ---- extern char *expand_assignment_string_to_string __P((char *, int)); + /* Expand an arithmetic expression string */ + extern char *expand_arith_string __P((char *, int)); + /* De-quoted quoted characters in STRING. */ extern char *dequote_string __P((char *)); *** ../bash-3.1-patched/arrayfunc.c Mon Jul 4 20:25:58 2005 --- arrayfunc.c Mon Mar 27 09:10:47 2006 *************** *** 593,601 **** strncpy (exp, s, len - 1); exp[len - 1] = '\0'; ! #if 0 ! t = expand_string_to_string (exp, 0); ! #else ! t = expand_string_to_string (exp, Q_DOUBLE_QUOTES); ! #endif this_command_name = (char *)NULL; val = evalexp (t, &expok); --- 591,595 ---- strncpy (exp, s, len - 1); exp[len - 1] = '\0'; ! t = expand_arith_string (exp, 0); this_command_name = (char *)NULL; val = evalexp (t, &expok); *** bash-3.1/patchlevel.h Wed Jul 20 13:58:20 2005 --- bash-3.1/patchlevel.h Wed Dec 7 13:48:42 2005 *************** *** 26,30 **** looks for to find the patch level (for the sccs version string). */ ! #define PATCHLEVEL 16 #endif /* _PATCHLEVEL_H_ */ --- 26,30 ---- looks for to find the patch level (for the sccs version string). */ ! #define PATCHLEVEL 17 #endif /* _PATCHLEVEL_H_ */