如何修复PHP扩展中的“分段错误”错误

时间:2019-07-31 01:40:50

标签: php c php-extension

我使用--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正确读取字符串。

0 个答案:

没有答案