diff -r 218234c0062c -r 5431772f7235 components/ksh93/patches/225-17817727.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/components/ksh93/patches/225-17817727.patch Thu Nov 26 02:23:48 2015 -0800 @@ -0,0 +1,25 @@ +This fix is from the community, details in the following location. +http://lists.research.att.com/pipermail/ast-users/2013q4/004481.html +--- +--- a/src/cmd/ksh93/sh/streval.c 2014-01-22 10:39:11.075964500 +0100 ++++ b/src/cmd/ksh93/sh/streval.c 2014-01-22 13:21:35.999184260 +0100 +@@ -366,13 +366,17 @@ + num = (Sflong_t)(sp[-1]) / (Sflong_t)(num); + break; + case A_LSHIFT: +- if(tp[-1]==2) ++ if((long)num >= CHAR_BIT*sizeof(Sfulong_t)) ++ num = 0; ++ else if(tp[-1]==2) + num = U2F((Sfulong_t)(sp[-1]) << (long)(num)); + else + num = (Sflong_t)(sp[-1]) << (long)(num); + break; + case A_RSHIFT: +- if(tp[-1]==2) ++ if((long)num >= CHAR_BIT*sizeof(Sfulong_t)) ++ num = 0; ++ else if(tp[-1]==2) + num = U2F((Sfulong_t)(sp[-1]) >> (long)(num)); + else + num = (Sflong_t)(sp[-1]) >> (long)(num);