Even looking at the page you linked to, I have no idea what the problem actually is.
You need to be a bit more specific if you want people to help you. One thing I notice is that you're using the old parameter fetching API, and not using it properly. If a non-string is passed to your functions, you'll most likely crash. On 12/12/05, D. Walsh <[EMAIL PROTECTED]> wrote: > I have the following code, it works properly under 4.3.9, 4.3.10. > 4.3.11, 4.4.0, 5.0.2, 5.0.3, 5.0.4 > > Under 5.1.2-dev, it doesn't perform as expected. > > I've scripted the configure options so all builds are the same so the > only thing changing is the version of PHP. > > Here's a link which shows what the results should be and what they are. > http://www.daleenterprise.com/test.php > > I'm not sure if a bug report is really required as it may be some > minor change I am unaware of and the included dev docs don't state so > how to proceed? > > > Here's the code for the two routines in question.. > > > /* {{{ proto string clam_scan_buffer(string $buffer) > Scan a given buffer for viruses. Returns false if no virus > present */ > PHP_FUNCTION(clam_scan_buffer) { > zval **buffer; > char *real_buffer = NULL; > long retb; > const char *virname; > > /* make sure virus dbdir exists - prevents a segfault */ > if (cl_error) { > php_error( E_WARNING, "Virus database directory (%s) does not > exist", INI_STR("clam.virus_dbdir")) ; > RETURN_FALSE; > } > > /* parse zend input */ > if (ZEND_NUM_ARGS() != 1 || (zend_get_parameters_ex(1, &buffer) == > FAILURE)) { > WRONG_PARAM_COUNT; > } > > /* convert zval input to real strings */ > real_buffer = Z_STRVAL_PP(buffer); > > /* scan buffer */ > retb = cl_scanbuff(real_buffer ,strlen(real_buffer), &virname, root); > if (retb == CL_VIRUS) { > RETURN_STRINGL((char *)virname,strlen(virname),1); > } else if (retb == CL_CLEAN) { > RETURN_FALSE; > } else { > php_error(E_WARNING,"error: %s", cl_strerror(retb)); > RETURN_FALSE; > } > } > /* }}} */ > > > /* {{{ proto string clam_scan_file(string $file) > Scan a given file for viruses. Returns false if no virus present */ > PHP_FUNCTION(clam_scan_file) { > zval **file; > char *real_file = NULL; > long options = CL_SCAN_STDOPT; > long retf; > const char *virname; > > /* make sure virus dbdir exists - prevents a segfault */ > if (cl_error) { > php_error( E_WARNING, "Virus database directory (%s) does not > exist", INI_STR("clam.virus_dbdir")) ; > RETURN_FALSE; > } > > /* parse zend input */ > if (ZEND_NUM_ARGS() != 1 || zend_get_parameters_ex(1, &file) == > FAILURE) { > WRONG_PARAM_COUNT; > } > > /* convert zval input to real strings */ > real_file = Z_STRVAL_PP(file); > > /* scan file */ > /*RETURN_STRINGL(real_file,strlen(real_file),1);*/ > retf = cl_scanfile(real_file, &virname, NULL, root, &limits, options); > /* return result */ > if (retf == CL_VIRUS) { > RETURN_STRINGL((char *)virname,strlen(virname),1); > } else if (retf == CL_CLEAN) { > RETURN_FALSE; > } else { > php_error(E_WARNING,"error: %s", cl_strerror(retf)); > RETURN_FALSE; > } > } > /* }}} */ > > -- > PHP Internals - PHP Runtime Development Mailing List > To unsubscribe, visit: http://www.php.net/unsub.php > > -- PHP Internals - PHP Runtime Development Mailing List To unsubscribe, visit: http://www.php.net/unsub.php