diff options
| author | Felipe Pena <felipe@php.net> | 2008-11-11 16:15:53 +0000 |
|---|---|---|
| committer | Felipe Pena <felipe@php.net> | 2008-11-11 16:15:53 +0000 |
| commit | 9b894e6e62f2af312f0a193a2039897eec3d0928 (patch) | |
| tree | 11642e979f7f63849bbd46472708ef990c8e5133 | |
| parent | 9178503610d4ec57409005863558fa2b32313ad2 (diff) | |
| download | php-git-9b894e6e62f2af312f0a193a2039897eec3d0928.tar.gz | |
- Fixed bug #46546 (Segmentation fault when using declare statement with non-string value)
# This issue only happens in this branch
| -rw-r--r-- | Zend/tests/declare_001.phpt | 16 | ||||
| -rw-r--r-- | Zend/zend_compile.c | 3 |
2 files changed, 18 insertions, 1 deletions
diff --git a/Zend/tests/declare_001.phpt b/Zend/tests/declare_001.phpt new file mode 100644 index 0000000000..8f6f733479 --- /dev/null +++ b/Zend/tests/declare_001.phpt @@ -0,0 +1,16 @@ +--TEST-- +Testing declare statement with several type values +--FILE-- +<?php + +declare(encoding = 1); +declare(encoding = 1123131232131312321); +declare(encoding = NULL); +declare(encoding = M_PI); +declare(encoding = 'utf-8'); + +print 'DONE'; + +?> +--EXPECT-- +DONE diff --git a/Zend/zend_compile.c b/Zend/zend_compile.c index 5d1c583fb1..90dcad362e 100644 --- a/Zend/zend_compile.c +++ b/Zend/zend_compile.c @@ -4770,12 +4770,13 @@ void zend_do_declare_stmt(znode *var, znode *val TSRMLS_DC) zend_multibyte_yyinput_again(old_input_filter, old_encoding TSRMLS_CC); } } + efree(val->u.constant.value.str.val); #else /* !ZEND_MULTIBYTE */ } else if (!zend_binary_strcasecmp(var->u.constant.value.str.val, var->u.constant.value.str.len, "encoding", sizeof("encoding")-1)) { /* Do not generate any kind of warning for encoding declares */ /* zend_error(E_COMPILE_WARNING, "Declare encoding [%s] not supported", val->u.constant.value.str.val); */ + zval_dtor(&val->u.constant); #endif /* ZEND_MULTIBYTE */ - efree(val->u.constant.value.str.val); } else { zend_error(E_COMPILE_WARNING, "Unsupported declare '%s'", var->u.constant.value.str.val); zval_dtor(&val->u.constant); |
