Re: cvs: php4 /ext/sysvmsg sysvmsg.c /ext/sysvmsg/tests 001.phpt
| From: | Wez Furlong | Date: | Mon, 29 Apr 2002 12:57:08 +0000 |
| Subject: | Re: cvs: php4 /ext/sysvmsg sysvmsg.c /ext/sysvmsg/tests 001.phpt | ||
| References: | 1 | Groups: | php.dev |
| Request: | Send a blank email to php-dev+get-83489@lists.php.net to get a copy of this message | ||
Is there a better way of acheiving this?
I want the unserialized data to be passed back as an out parameter, but
if I pass the actual out_message var to php_var_unserialize I get segfaults
or overruns.
--Wez.
> if (do_unserialize) {
> php_unserialize_data_t var_hash;
> + zval *tmp = NULL;
> const char *p = (const char*)messagebuffer->mtext;
>
> + MAKE_STD_ZVAL(tmp);
> PHP_VAR_UNSERIALIZE_INIT(var_hash);
> - if (!php_var_unserialize(&return_value, &p, p + result, &var_hash TSRMLS_CC)) {
> + if (!php_var_unserialize(&tmp, &p, p + result, &var_hash TSRMLS_CC)) {
> zend_error(E_WARNING, "%s(): message corrupted",
> get_active_function_name(TSRMLS_C));
> RETVAL_FALSE;
> }
> + REPLACE_ZVAL_VALUE(&out_message, tmp, 0);
> + FREE_ZVAL(tmp);
> PHP_VAR_UNSERIALIZE_DESTROY(var_hash);
> } else {