com php-src: Return FALSE on bit shift by negative number: Zend/zend_operators.c
| From: | ajf@php.net | Date: | Tue, 19 Aug 2014 19:21:22 +0000 |
| Subject: | com php-src: Return FALSE on bit shift by negative number: Zend/zend_operators.c | ||
| Groups: | php.cvs | ||
| Request: | Send a blank email to php-cvs+get-81837@lists.php.net to get a copy of this message | ||
Commit: 6a94568f8246f6df33ee259429875bd10ffdf0a8
Author: Andrea Faulds <ajf@ajf.me> Fri, 15 Aug 2014 17:29:26 +0100
Parents: f07b41b465a5bb314a2d3b2bf309828e2dd7e299
Branches: master
Link: http://git.php.net/?p=php-src.git;a=commitdiff;h=6a94568f8246f6df33ee259429875bd10ffdf0a8
Log:
Return FALSE on bit shift by negative number
Changed paths:
M Zend/zend_operators.c
Diff:
diff --git a/Zend/zend_operators.c b/Zend/zend_operators.c
index 921d71b..7d591f5 100644
--- a/Zend/zend_operators.c
+++ b/Zend/zend_operators.c
@@ -1493,6 +1493,12 @@ ZEND_API int shift_left_function(zval *result, zval *op1, zval *op2
TSRMLS_DC) /
op1_lval = Z_LVAL_P(op1);
}
+ if (Z_LVAL_P(op2) < 0) {
+ zend_error(E_WARNING, "Bit shift by negative number");
+ ZVAL_FALSE(result);
+ return FAILURE;
+ }
+
ZVAL_LONG(result, op1_lval << Z_LVAL_P(op2));
return SUCCESS;
}
@@ -1513,6 +1519,12 @@ ZEND_API int shift_right_function(zval *result, zval *op1, zval *op2
TSRMLS_DC)
op1_lval = Z_LVAL_P(op1);
}
+ if (Z_LVAL_P(op2) < 0) {
+ zend_error(E_WARNING, "Bit shift by negative number");
+ ZVAL_FALSE(result);
+ return FAILURE;
+ }
+
ZVAL_LONG(result, op1_lval >> Z_LVAL_P(op2));
return SUCCESS;
}