mirror of
https://github.com/php/php-src.git
synced 2024-09-21 18:07:23 +00:00
Prevent memcmp() result truncation
This fixes reported issues with sapi/phpdbg/tests/watch_001.phpt
This commit is contained in:
parent
6efbfc4caf
commit
d398cc9d10
@ -964,7 +964,7 @@ static void phpdbg_print_changed_zval(phpdbg_watch_memdump *dump) {
|
||||
|
||||
switch (watch->type) {
|
||||
case WATCH_ON_ZVAL:
|
||||
do_break = memcmp(oldPtr, watch->addr.zv, sizeof(zend_value) + sizeof(uint32_t) /* value + typeinfo */);
|
||||
do_break = memcmp(oldPtr, watch->addr.zv, sizeof(zend_value) + sizeof(uint32_t) /* value + typeinfo */) != 0;
|
||||
if (!do_break) {
|
||||
goto end;
|
||||
}
|
||||
@ -976,7 +976,7 @@ static void phpdbg_print_changed_zval(phpdbg_watch_memdump *dump) {
|
||||
}
|
||||
break;
|
||||
case WATCH_ON_REFCOUNTED:
|
||||
do_break = memcmp(oldPtr, watch->addr.ref, sizeof(uint32_t) /* no zend_refcounted metadata info */);
|
||||
do_break = memcmp(oldPtr, watch->addr.ref, sizeof(uint32_t) /* no zend_refcounted metadata info */) != 0;
|
||||
if (!do_break) {
|
||||
goto end;
|
||||
}
|
||||
@ -999,7 +999,7 @@ static void phpdbg_print_changed_zval(phpdbg_watch_memdump *dump) {
|
||||
|
||||
switch (watch->type) {
|
||||
case WATCH_ON_ZVAL: {
|
||||
int show_value = memcmp(oldPtr, watch->addr.zv, sizeof(zend_value) + sizeof(uint32_t) /* no metadata info */);
|
||||
zend_bool show_value = memcmp(oldPtr, watch->addr.zv, sizeof(zend_value) + sizeof(uint32_t) /* no metadata info */) != 0;
|
||||
|
||||
if ((watch->flags & PHPDBG_WATCH_NORMAL) && (removed || show_value)) {
|
||||
/* TODO: Merge with refcounting watches, store if watched ref value is to be dropped etc. [for example: manually increment refcount transparently for displaying and drop it if it decrements to 1] */
|
||||
|
Loading…
Reference in New Issue
Block a user