BASH PATCH REPORT =================
Bash-Release: 4.2 Patch-ID: bash42-015 Bug-Reported-by: <dnade....@orange-ftgroup.com> Bug-Reference-ID: <728_1312188080_4e3666b0_728_118711_1_3b5d3e0f95cc5c478d6500cdce8b691f7aaaa4a...@puexcb2b.nanterre.francetelecom.fr> Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2011-08/msg00000.html Bug-Description: When in a context where arithmetic evaluation is not taking place, the evaluator should not check for division by 0. Patch (apply with `patch -p0'): *** ../bash-4.2-patched/expr.c 2010-12-21 11:12:13.000000000 -0500 --- expr.c 2011-08-02 20:58:28.000000000 -0400 *************** *** 477,480 **** --- 481,492 ---- if (special) { + if ((op == DIV || op == MOD) && value == 0) + { + if (noeval == 0) + evalerror (_("division by 0")); + else + value = 1; + } + switch (op) { *************** *** 483,493 **** break; case DIV: - if (value == 0) - evalerror (_("division by 0")); lvalue /= value; break; case MOD: - if (value == 0) - evalerror (_("division by 0")); lvalue %= value; break; --- 495,501 ---- *************** *** 805,809 **** if (((op == DIV) || (op == MOD)) && (val2 == 0)) ! evalerror (_("division by 0")); if (op == MUL) --- 813,822 ---- if (((op == DIV) || (op == MOD)) && (val2 == 0)) ! { ! if (noeval == 0) ! evalerror (_("division by 0")); ! else ! val2 = 1; ! } if (op == MUL) *** ../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 14 #endif /* _PATCHLEVEL_H_ */ --- 26,30 ---- looks for to find the patch level (for the sccs version string). */ ! #define PATCHLEVEL 15 #endif /* _PATCHLEVEL_H_ */ -- ``The lyf so short, the craft so long to lerne.'' - Chaucer ``Ars longa, vita brevis'' - Hippocrates Chet Ramey, ITS, CWRU c...@case.edu http://cnswww.cns.cwru.edu/~chet/