components/ksh93/patches/225-17817727.patch
changeset 5129 5431772f7235
parent 4268 d723f8ed85fe
--- /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);