Edit report at https://bugs.php.net/bug.php?id=60779&edit=1

 ID:                 60779
 Comment by:         phpmpan at mpan dot pl
 Reported by:        wojtos at gmail dot com
 Summary:            Incorrect return value for getprotobyname
 Status:             Open
 Type:               Bug
 Package:            *Network Functions
 Operating System:   Debian Squeeze
 PHP Version:        Irrelevant
 Block user comment: N
 Private report:     N

 New Comment:

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 ---------


Previous Comments:
------------------------------------------------------------------------
[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

Reply via email to