我使用--enable-debug配置php-7.1.0。但是我的扩展名无法获取字符串参数。现在是“分段错误”,并且没有--enable-debug就不会发生。
这是php问题还是我的代码有问题?
我尝试使用gdb进行调试。它发生在函数“ zend_parse_parameters”中。在运行函数“ zend_parse_arg_string”的末尾之前,这是正常现象。字符串的指针被重定向到。
PHP_FUNCTION(sigTKeyEncrypt)
{
array_init(return_value);
const unsigned char *pInBuf = NULL;
int nInBufLen, pOutBufLen;
char pOutBuf[BUF_LEN] = { 0 };
pOutBufLen = sizeof(pOutBuf);
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &pInBuf, &nInBufLen) == FAILURE) {
php_printf("zend_parse_parameters failed!\n");
add_assoc_long(return_value, "r", 99);
return;
}
php_printf("buf:%s, bufLen:%d\n", pInBuf, nInBufLen);
OicqEncrypt(300, pInBuf, nInBufLen, (const BYTE*)SIG_TENCENT_KEY, (unsigned char*)pOutBuf, &pOutBufLen);
add_assoc_long(return_value, "r", 0);
add_assoc_stringl(return_value, "data", pOutBuf, pOutBufLen);
}
我希望函数“ zend_parse_parameters”可以使用configure --enable-debug正确读取字符串。