1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70
|
#! /bin/sh -e
if [ $# -eq 3 -a "$2" = '-d' ]; then
pdir="-d $3"
elif [ $# -ne 1 ]; then
echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
exit 1
fi
case "$1" in
-patch) patch $pdir -f --no-backup-if-mismatch -p0 < $0;;
-unpatch) patch $pdir -f --no-backup-if-mismatch -R -p0 < $0;;
*)
echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
exit 1
esac
exit 0
# DP: bash-3.2 upstream patch bash32-023
BASH PATCH REPORT
=================
Bash-Release: 3.2
Patch-ID: bash32-023
Bug-Reported-by: Chet Ramey <chet.ramey@cwru.edu>
Bug-Reference-ID:
Bug-Reference-URL:
Bug-Description:
When an error occurs during the pattern removal word expansion, the shell
can free unallocated memory or free memory multiple times.
Patch:
*** ../bash-3.2-patched/subst.c Tue Apr 3 16:47:19 2007
--- subst.c Tue Jul 17 09:45:11 2007
***************
*** 3975,3979 ****
patstr++;
! pattern = getpattern (patstr, quoted, 1);
temp1 = (char *)NULL; /* shut up gcc */
--- 4008,4016 ----
patstr++;
! /* Need to pass getpattern newly-allocated memory in case of expansion --
! the expansion code will free the passed string on an error. */
! temp1 = savestring (patstr);
! pattern = getpattern (temp1, quoted, 1);
! free (temp1);
temp1 = (char *)NULL; /* shut up gcc */
*** ../bash-3.2/patchlevel.h Thu Apr 13 08:31:04 2006
--- patchlevel.h Mon Oct 16 14:22:54 2006
***************
*** 26,30 ****
looks for to find the patch level (for the sccs version string). */
! #define PATCHLEVEL 22
#endif /* _PATCHLEVEL_H_ */
--- 26,30 ----
looks for to find the patch level (for the sccs version string). */
! #define PATCHLEVEL 23
#endif /* _PATCHLEVEL_H_ */
|