iliaa                                    Sat, 03 Mar 2012 20:36:14 +0000

Revision: http://svn.php.net/viewvc?view=revision&revision=323852

Log:
Fixed bug #60106 (stream_socket_server silently truncates long unix socket 
paths)

Bug: https://bugs.php.net/60106 (Open) stream_socket_server + long unix socket 
path = 'Unknown error'
      
Changed paths:
    U   php/php-src/branches/PHP_5_3/NEWS
    A   php/php-src/branches/PHP_5_3/ext/standard/tests/streams/bug60106.phpt
    U   php/php-src/branches/PHP_5_3/main/streams/xp_socket.c
    U   php/php-src/branches/PHP_5_4/NEWS
    A   php/php-src/branches/PHP_5_4/ext/standard/tests/streams/bug60106.phpt
    U   php/php-src/branches/PHP_5_4/main/streams/xp_socket.c
    A   php/php-src/trunk/ext/standard/tests/streams/bug60106.phpt
    U   php/php-src/trunk/main/streams/xp_socket.c

Modified: php/php-src/branches/PHP_5_3/NEWS
===================================================================
--- php/php-src/branches/PHP_5_3/NEWS	2012-03-03 15:08:21 UTC (rev 323851)
+++ php/php-src/branches/PHP_5_3/NEWS	2012-03-03 20:36:14 UTC (rev 323852)
@@ -62,6 +62,8 @@
 - Streams:
   . Fixed bug #61115 (stream related segfault on fatal error in
     php_stream_context_link). (Gustavo)
+  . Fixed bug #60106 (stream_socket_server silently truncates long unix
+    socket paths). (Ilia)
   . Further fix for bug #60455 (stream_get_line misbehaves if EOF is not
     detected together with the last read). (Gustavo)
   . Fixed bug #60817 (stream_get_line() reads from stream even when there is

Added: php/php-src/branches/PHP_5_3/ext/standard/tests/streams/bug60106.phpt
===================================================================
--- php/php-src/branches/PHP_5_3/ext/standard/tests/streams/bug60106.phpt	                        (rev 0)
+++ php/php-src/branches/PHP_5_3/ext/standard/tests/streams/bug60106.phpt	2012-03-03 20:36:14 UTC (rev 323852)
@@ -0,0 +1,14 @@
+--TEST--
+Bug#60106 (stream_socket_server silently truncates long unix socket paths)
+--FILE--
+<?php
+	error_reporting(E_ALL | E_NOTICE);
+	stream_socket_server("unix:///tmp/" . str_repeat("a", 4096));
+?>
+===DONE===
+--EXPECTF--
+Notice: stream_socket_server(): socket path exceeded the maximum allowed length of %d bytes and was truncated in %s on line %d
+
+Warning: stream_socket_server(): unable to connect to unix:///tmp/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa in %s on line %d
+===DONE===
+

Modified: php/php-src/branches/PHP_5_3/main/streams/xp_socket.c
===================================================================
--- php/php-src/branches/PHP_5_3/main/streams/xp_socket.c	2012-03-03 15:08:21 UTC (rev 323851)
+++ php/php-src/branches/PHP_5_3/main/streams/xp_socket.c	2012-03-03 20:36:14 UTC (rev 323852)
@@ -514,6 +514,7 @@
 		 * BUT, to get into this branch of code, the name is too long,
 		 * so we don't care. */
 		xparam->inputs.namelen = sizeof(unix_addr->sun_path) - 1;
+		php_error_docref(NULL TSRMLS_CC, E_NOTICE, "socket path exceeded the maximum allowed length of %ld bytes and was truncated", sizeof(unix_addr->sun_path));
 	}

 	memcpy(unix_addr->sun_path, xparam->inputs.name, xparam->inputs.namelen);

Modified: php/php-src/branches/PHP_5_4/NEWS
===================================================================
--- php/php-src/branches/PHP_5_4/NEWS	2012-03-03 15:08:21 UTC (rev 323851)
+++ php/php-src/branches/PHP_5_4/NEWS	2012-03-03 20:36:14 UTC (rev 323852)
@@ -45,6 +45,7 @@
 - Standard:
   . Fixed memory leak in substr_replace. (Pierrick)
   . Make max_file_uploads ini directive settable outside of php.ini (Rasmus)
+  . Fixed bug #60106 (stream_socket_server silently truncates long unix socket paths). (Ilia)

 - XMLRPC:
   . Fixed bug #61097 (Memory leak in xmlrpc functions copying zvals). (Nikita Popov)

Added: php/php-src/branches/PHP_5_4/ext/standard/tests/streams/bug60106.phpt
===================================================================
--- php/php-src/branches/PHP_5_4/ext/standard/tests/streams/bug60106.phpt	                        (rev 0)
+++ php/php-src/branches/PHP_5_4/ext/standard/tests/streams/bug60106.phpt	2012-03-03 20:36:14 UTC (rev 323852)
@@ -0,0 +1,14 @@
+--TEST--
+Bug#60106 (stream_socket_server silently truncates long unix socket paths)
+--FILE--
+<?php
+	error_reporting(E_ALL | E_NOTICE);
+	stream_socket_server("unix:///tmp/" . str_repeat("a", 4096));
+?>
+===DONE===
+--EXPECTF--
+Notice: stream_socket_server(): socket path exceeded the maximum allowed length of %d bytes and was truncated in %s on line %d
+
+Warning: stream_socket_server(): unable to connect to unix:///tmp/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa in %s on line %d
+===DONE===
+

Modified: php/php-src/branches/PHP_5_4/main/streams/xp_socket.c
===================================================================
--- php/php-src/branches/PHP_5_4/main/streams/xp_socket.c	2012-03-03 15:08:21 UTC (rev 323851)
+++ php/php-src/branches/PHP_5_4/main/streams/xp_socket.c	2012-03-03 20:36:14 UTC (rev 323852)
@@ -510,6 +510,7 @@
 		 * BUT, to get into this branch of code, the name is too long,
 		 * so we don't care. */
 		xparam->inputs.namelen = sizeof(unix_addr->sun_path) - 1;
+		php_error_docref(NULL TSRMLS_CC, E_NOTICE, "socket path exceeded the maximum allowed length of %ld bytes and was truncated", sizeof(unix_addr->sun_path));
 	}

 	memcpy(unix_addr->sun_path, xparam->inputs.name, xparam->inputs.namelen);

Added: php/php-src/trunk/ext/standard/tests/streams/bug60106.phpt
===================================================================
--- php/php-src/trunk/ext/standard/tests/streams/bug60106.phpt	                        (rev 0)
+++ php/php-src/trunk/ext/standard/tests/streams/bug60106.phpt	2012-03-03 20:36:14 UTC (rev 323852)
@@ -0,0 +1,14 @@
+--TEST--
+Bug#60106 (stream_socket_server silently truncates long unix socket paths)
+--FILE--
+<?php
+	error_reporting(E_ALL | E_NOTICE);
+	stream_socket_server("unix:///tmp/" . str_repeat("a", 4096));
+?>
+===DONE===
+--EXPECTF--
+Notice: stream_socket_server(): socket path exceeded the maximum allowed length of %d bytes and was truncated in %s on line %d
+
+Warning: stream_socket_server(): unable to connect to unix:///tmp/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa in %s on line %d
+===DONE===
+

Modified: php/php-src/trunk/main/streams/xp_socket.c
===================================================================
--- php/php-src/trunk/main/streams/xp_socket.c	2012-03-03 15:08:21 UTC (rev 323851)
+++ php/php-src/trunk/main/streams/xp_socket.c	2012-03-03 20:36:14 UTC (rev 323852)
@@ -510,6 +510,7 @@
 		 * BUT, to get into this branch of code, the name is too long,
 		 * so we don't care. */
 		xparam->inputs.namelen = sizeof(unix_addr->sun_path) - 1;
+		php_error_docref(NULL TSRMLS_CC, E_NOTICE, "socket path exceeded the maximum allowed length of %ld bytes and was truncated", sizeof(unix_addr->sun_path));
 	}

 	memcpy(unix_addr->sun_path, xparam->inputs.name, xparam->inputs.namelen);
-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to