php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #25487 ip2long() uses the obsolete inet_addr() interface
Submitted: 2003-09-11 06:31 UTC Modified: 2003-09-12 00:07 UTC
From: ckruse at wwwtech dot de Assigned: iliaa (profile)
Status: Wont fix Package: Network related
PHP Version: 4.3.3 OS: All
Private report: No CVE-ID: None
Welcome back! If you're the original bug submitter, here's where you can edit the bug or add additional notes.
If you forgot your password, you can retrieve your password here.
Password:
Status:
Package:
Bug Type:
Summary:
From: ckruse at wwwtech dot de
New email:
PHP Version: OS:

 

 [2003-09-11 06:31 UTC] ckruse at wwwtech dot de
Description:
------------
PHP uses in the ip2long() function the obsolete inet_addr() interface which makes it impossible to detect errors in the input values: inet_addr() converts 255.255.255.255 to -1, which is correct. But in error case it also returns INADDR_NONE, wich is usually defined as -1. Therefore the inet_aton() function should be used. I made a little patch which corrects this.

Actual result:
--------------
1223a1224
>   struct in_addr in;
1231c1232,1237
<       RETURN_LONG(ntohl(inet_addr(Z_STRVAL_PP(str))));
---
>   if(inet_aton(Z_STRVAL_PP(str),&inp) == 0) {
>     php_error_docref(NULL TSRMLS_CC, E_WARNING, "Invalid address");
>     RETURN_NULL();
>   }
> 
>   RETURN_LONG(ntohl(inp.s_addr));


Patches

Pull Requests

History

AllCommentsChangesGit/SVN commitsRelated reports
 [2003-09-12 00:07 UTC] iliaa@php.net
ip2long() cannot return FALSE because it would break backwards compatibility. This in turn makes changing inet_addr() to inet_aton(), which is not avaliable on all systems pointless.
 
PHP Copyright © 2001-2024 The PHP Group
All rights reserved.
Last updated: Sat Dec 21 16:01:28 2024 UTC