Edit report at https://bugs.php.net/bug.php?id=60779&edit=1
ID: 60779 Updated by: larue...@php.net Reported by: wojtos at gmail dot com Summary: Incorrect return value for getprotobyname -Status: Open +Status: Duplicate Type: Bug Package: *Network Functions Operating System: Debian Squeeze PHP Version: Irrelevant Block user comment: N Private report: N New Comment: dup to #60781 Previous Comments: ------------------------------------------------------------------------ [2012-01-18 08:21:40] wojtos at gmail dot com Thank You for your reply. Indeed I checked and it does return FALSE. The bug or rather misinformation lies in the documentation where it states "Returns the protocol number or -1 if the protocol is not found.". When in the test script I checked for === FALSE it worked as expected. ------------------------------------------------------------------------ [2012-01-17 16:25:28] phpmpan at mpan dot pl Or you can't... Are you sure that you're receiving 0, not `FALSE`? If yes, than I'm NOT confirming this behaviour with 5.3.9, 5.3-dev, 5.4-dev or trunk-dev (on Arch64). In all four versions `getprotobyname` returns `FALSE`. Also returning 0 seems very strange. PHP just forwards the call to `getprotobyname` from netdb. In case of an error or if a protocol is not found, this function should return `NULL`. PHP checks if the call has returned `NULL` and, if it did, returns `FALSE`. Therefore if you're receiving 0, this would indicate a bug in the host environment, not in PHP itself. -------- BEGIN CODE -------- // ext/standard/basic_functions.c from SVN // ... ent = getprotobyname(name); if (ent == NULL) { RETURN_FALSE; } // ... --------- END CODE --------- ------------------------------------------------------------------------ [2012-01-17 15:46:49] phpmpan at mpan dot pl This is not a bug in `getprotobyname`. It's a bug in documentation for the function. `getprotobyname` returns `FALSE`, not 0 in case of an error. I will fill a report for that in a moment. You can close this one. ------------------------------------------------------------------------ [2012-01-17 14:19:22] wojtos at gmail dot com Description: ------------ --- >From manual page: >http://www.php.net/function.getprotobyname#refsect1-function.getprotobyname-returnvalues --- Return for unrecognized protocol is 0 instead of -1. PHP 5.3.3-7+squeeze3 with Suhosin-Patch (cli) (built: Jun 28 2011 13:13:26) Test script: --------------- <?php $protocol = 'BLA'; $get_prot = getprotobyname($protocol); if ($get_prot == -1) { echo 'Invalid Protocol'; } else { echo 'Protocol #' . $get_prot; } ?> Expected result: ---------------- Invalid Protocol Actual result: -------------- Protocol #0 ------------------------------------------------------------------------ -- Edit this bug report at https://bugs.php.net/bug.php?id=60779&edit=1