components/ksh93/patches/225-17817727.patch
changeset 4305 90493abe0c5c
parent 4304 b35bb72c479d
child 4307 7ea76682d676
equal deleted inserted replaced
4304:b35bb72c479d 4305:90493abe0c5c
     1 This fix is from the community, details in the following location.
       
     2 http://lists.research.att.com/pipermail/ast-users/2013q4/004481.html
       
     3 ---
       
     4 --- a/src/cmd/ksh93/sh/streval.c	2014-01-22 10:39:11.075964500 +0100
       
     5 +++ b/src/cmd/ksh93/sh/streval.c	2014-01-22 13:21:35.999184260 +0100
       
     6 @@ -366,13 +366,17 @@
       
     7  				num = (Sflong_t)(sp[-1]) / (Sflong_t)(num);
       
     8  			break;
       
     9  		    case A_LSHIFT:
       
    10 -			if(tp[-1]==2)
       
    11 +			if((long)num >= CHAR_BIT*sizeof(Sfulong_t))
       
    12 +				num = 0;
       
    13 +			else if(tp[-1]==2)
       
    14  				num = U2F((Sfulong_t)(sp[-1]) << (long)(num));
       
    15  			else
       
    16  				num = (Sflong_t)(sp[-1]) << (long)(num);
       
    17  			break;
       
    18  		    case A_RSHIFT:
       
    19 -			if(tp[-1]==2)
       
    20 +			if((long)num >= CHAR_BIT*sizeof(Sfulong_t))
       
    21 +				num = 0;
       
    22 +			else if(tp[-1]==2)
       
    23  				num = U2F((Sfulong_t)(sp[-1]) >> (long)(num));
       
    24  			else
       
    25  				num = (Sflong_t)(sp[-1]) >> (long)(num);