Commit 381cdd7aa9c for php

commit 381cdd7aa9cebb78a076d9fdb6694d40b8b9242d
Author: Gina Peter Banyard <girgias@php.net>
Date:   Sat Nov 29 14:46:25 2025 +0000

    ext/standard/basic_functions.c: perform basic input checks for ip2long()

diff --git a/ext/standard/basic_functions.c b/ext/standard/basic_functions.c
index b8c488ae276..5313388d8fc 100644
--- a/ext/standard/basic_functions.c
+++ b/ext/standard/basic_functions.c
@@ -596,7 +596,12 @@ PHP_FUNCTION(ip2long)
 		Z_PARAM_PATH(addr, addr_len)
 	ZEND_PARSE_PARAMETERS_END();

-	if (addr_len == 0 || inet_pton(AF_INET, addr, &ip) != 1) {
+	if (addr_len == 0) {
+		zend_argument_must_not_be_empty_error(1);
+		RETURN_THROWS();
+	}
+
+	if (inet_pton(AF_INET, addr, &ip) != 1) {
 		RETURN_FALSE;
 	}
 #ifdef _AIX
diff --git a/ext/standard/tests/network/ip.phpt b/ext/standard/tests/network/ip.phpt
index b6ac49d5df6..6924befea3b 100644
--- a/ext/standard/tests/network/ip.phpt
+++ b/ext/standard/tests/network/ip.phpt
@@ -7,21 +7,20 @@
 --FILE--
 <?php

-$array = array(
+$array = [
     "127.0.0.1",
     "10.0.0.1",
     "255.255.255.255",
     "255.255.255.0",
     "0.0.0.0",
     "66.163.161.116",
-);
+];

 foreach ($array as $ip) {
     var_dump($long = ip2long($ip));
     var_dump(long2ip($long));
 }

-var_dump(ip2long(""));
 var_dump(ip2long("777.777.777.777"));
 var_dump(ip2long("111.111.111.111"));

@@ -43,7 +42,6 @@
 int(1118019956)
 string(14) "66.163.161.116"
 bool(false)
-bool(false)
 int(1869573999)
 string(13) "255.254.82.80"
 Done
diff --git a/ext/standard/tests/network/ip2long_errors.phpt b/ext/standard/tests/network/ip2long_errors.phpt
new file mode 100644
index 00000000000..dc39d3f9664
--- /dev/null
+++ b/ext/standard/tests/network/ip2long_errors.phpt
@@ -0,0 +1,20 @@
+--TEST--
+ip2long() error conditions
+--FILE--
+<?php
+
+try {
+	var_dump(ip2long(""));
+} catch (Throwable $e) {
+	echo $e::class, ': ', $e->getMessage(), PHP_EOL;
+}
+try {
+	var_dump(ip2long("127\00.0.1"));
+} catch (Throwable $e) {
+	echo $e::class, ': ', $e->getMessage(), PHP_EOL;
+}
+?>
+--EXPECT--
+ValueError: ip2long(): Argument #1 ($ip) must not be empty
+ValueError: ip2long(): Argument #1 ($ip) must not contain any null bytes
+
diff --git a/ext/standard/tests/network/ip_x86_64.phpt b/ext/standard/tests/network/ip_x86_64.phpt
index 16e855188aa..58df8086577 100644
--- a/ext/standard/tests/network/ip_x86_64.phpt
+++ b/ext/standard/tests/network/ip_x86_64.phpt
@@ -7,21 +7,19 @@
 --FILE--
 <?php

-$array = array(
+$array = [
     "127.0.0.1",
     "10.0.0.1",
     "255.255.255.255",
     "255.255.255.0",
     "0.0.0.0",
     "66.163.161.116",
-);
+];

 foreach ($array as $ip) {
     var_dump($long = ip2long($ip));
     var_dump(long2ip($long));
 }
-
-var_dump(ip2long(""));
 var_dump(ip2long("777.777.777.777"));
 var_dump(ip2long("111.111.111.111"));

@@ -45,7 +43,6 @@
 int(1118019956)
 string(14) "66.163.161.116"
 bool(false)
-bool(false)
 int(1869573999)
 string(13) "255.254.82.80"
 string(15) "255.255.255.255"