diff options
| author | Nikita Popov <nikita.ppv@gmail.com> | 2019-06-19 12:59:18 +0200 |
|---|---|---|
| committer | Nikita Popov <nikita.ppv@gmail.com> | 2019-06-19 15:09:00 +0200 |
| commit | ed2a242317213e7f483b2967c2921d2bae5d1097 (patch) | |
| tree | bbac156702871188c78a792e0defd821c1c3d127 /Zend/zend_operators.c | |
| parent | 82a34e71c59010b64cf0104789da66d0c4d26b9c (diff) | |
| download | php-git-ed2a242317213e7f483b2967c2921d2bae5d1097.tar.gz | |
Fix signed shift UB
Diffstat (limited to 'Zend/zend_operators.c')
| -rw-r--r-- | Zend/zend_operators.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/Zend/zend_operators.c b/Zend/zend_operators.c index 384884965d..14019a5afa 100644 --- a/Zend/zend_operators.c +++ b/Zend/zend_operators.c @@ -1757,7 +1757,8 @@ ZEND_API int ZEND_FASTCALL shift_left_function(zval *result, zval *op1, zval *op zval_ptr_dtor(result); } - ZVAL_LONG(result, op1_lval << op2_lval); + /* Perform shift on unsigned numbers to get well-defined wrap behavior. */ + ZVAL_LONG(result, (zend_long) ((zend_ulong) op1_lval << op2_lval)); return SUCCESS; } /* }}} */ |
