[PHP-CVS] svn: /php/php-src/ branches/PHP_5_3/NEWS branches/PHP_5_3/ext/standard/http_fopen_wrapper.c branches/PHP_5_4/ext/standard/http_fopen_wrapper.c trunk/ext/standard/http_fopen_wrapper.c

2011-05-29 Thread Ilia Alshanetsky
iliaaSun, 29 May 2011 09:23:08 +

Revision: http://svn.php.net/viewvc?view=revisionrevision=311542

Log:
Fixed bug #54137 (file_get_contents POST request sends additional line break).

Bug: http://bugs.php.net/54137 (Open) file_get_contents POST request sends 
additional line breaks
  
Changed paths:
U   php/php-src/branches/PHP_5_3/NEWS
U   php/php-src/branches/PHP_5_3/ext/standard/http_fopen_wrapper.c
U   php/php-src/branches/PHP_5_4/ext/standard/http_fopen_wrapper.c
U   php/php-src/trunk/ext/standard/http_fopen_wrapper.c

Modified: php/php-src/branches/PHP_5_3/NEWS
===
--- php/php-src/branches/PHP_5_3/NEWS   2011-05-29 07:35:10 UTC (rev 311541)
+++ php/php-src/branches/PHP_5_3/NEWS   2011-05-29 09:23:08 UTC (rev 311542)
@@ -28,6 +28,7 @@
   . Fixed a crash inside dtor for error handling. (Ilia)

   . Fixed bug #54935 php_win_err can lead to crash. (Pierre)
+  . Fixed bug #54924 (assert.* is not being reset upon request shutdown). 
(Ilia)
   . Fixed bug #54895 (Fix compiling with older gcc version without need for
 membar_producer macro). (mhei at heimpold dot de)
   . Fixed bug #54723 (getimagesize() doesn't check the full ico signature).
@@ -38,6 +39,8 @@
 (CVE-2011-1148)
   . Fixed bug #54180 (parse_url() incorrectly parses path when ? in fragment).
 (tomas dot brastavicius at quantum dot lt, Pierrick)
+  . Fixed bug #54137 (file_get_contents POST request sends additional line 
break).
+(maurice-php at mertinkat dot net, Ilia)
   . Fixed bug #54866 (incorrect accounting for realpath_cache_size) (Dustin 
Ward)
   . Fixed bug #54721 (Different Hashes on Windows, BSD and Linux on wrong Salt 
size)
 (Pierre, os at irj dot ru)

Modified: php/php-src/branches/PHP_5_3/ext/standard/http_fopen_wrapper.c
===
--- php/php-src/branches/PHP_5_3/ext/standard/http_fopen_wrapper.c  
2011-05-29 07:35:10 UTC (rev 311541)
+++ php/php-src/branches/PHP_5_3/ext/standard/http_fopen_wrapper.c  
2011-05-29 09:23:08 UTC (rev 311542)
@@ -631,7 +631,6 @@
}
php_stream_write(stream, \r\n, sizeof(\r\n)-1);
php_stream_write(stream, Z_STRVAL_PP(tmpzval), 
Z_STRLEN_PP(tmpzval));
-   php_stream_write(stream, \r\n\r\n, sizeof(\r\n\r\n)-1);
} else {
php_stream_write(stream, \r\n, sizeof(\r\n)-1);
}

Modified: php/php-src/branches/PHP_5_4/ext/standard/http_fopen_wrapper.c
===
--- php/php-src/branches/PHP_5_4/ext/standard/http_fopen_wrapper.c  
2011-05-29 07:35:10 UTC (rev 311541)
+++ php/php-src/branches/PHP_5_4/ext/standard/http_fopen_wrapper.c  
2011-05-29 09:23:08 UTC (rev 311542)
@@ -628,7 +628,6 @@
}
php_stream_write(stream, \r\n, sizeof(\r\n)-1);
php_stream_write(stream, Z_STRVAL_PP(tmpzval), 
Z_STRLEN_PP(tmpzval));
-   php_stream_write(stream, \r\n\r\n, sizeof(\r\n\r\n)-1);
} else {
php_stream_write(stream, \r\n, sizeof(\r\n)-1);
}

Modified: php/php-src/trunk/ext/standard/http_fopen_wrapper.c
===
--- php/php-src/trunk/ext/standard/http_fopen_wrapper.c 2011-05-29 07:35:10 UTC 
(rev 311541)
+++ php/php-src/trunk/ext/standard/http_fopen_wrapper.c 2011-05-29 09:23:08 UTC 
(rev 311542)
@@ -628,7 +628,6 @@
}
php_stream_write(stream, \r\n, sizeof(\r\n)-1);
php_stream_write(stream, Z_STRVAL_PP(tmpzval), 
Z_STRLEN_PP(tmpzval));
-   php_stream_write(stream, \r\n\r\n, sizeof(\r\n\r\n)-1);
} else {
php_stream_write(stream, \r\n, sizeof(\r\n)-1);
}

-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

[PHP-CVS] svn: /php/php-src/ branches/PHP_5_3/NEWS branches/PHP_5_3/ext/standard/file.c branches/PHP_5_3/ext/standard/tests/file/bug53848.phpt branches/PHP_5_4/ext/standard/file.c branches/PHP_5_4/ext

2011-05-29 Thread Ilia Alshanetsky
iliaaSun, 29 May 2011 10:23:06 +

Revision: http://svn.php.net/viewvc?view=revisionrevision=311543

Log:
Fixed bug #53848 (fgetcsv() ignores spaces at beginnings of fields).

Bug: http://bugs.php.net/53848 (Closed) fgetcsv ignores spaces at beginnings of 
fields
  
Changed paths:
U   php/php-src/branches/PHP_5_3/NEWS
U   php/php-src/branches/PHP_5_3/ext/standard/file.c
A   php/php-src/branches/PHP_5_3/ext/standard/tests/file/bug53848.phpt
U   php/php-src/branches/PHP_5_4/ext/standard/file.c
A   php/php-src/branches/PHP_5_4/ext/standard/tests/file/bug53848.phpt
U   php/php-src/trunk/ext/standard/file.c
A   php/php-src/trunk/ext/standard/tests/file/bug53848.phpt

Modified: php/php-src/branches/PHP_5_3/NEWS
===
--- php/php-src/branches/PHP_5_3/NEWS   2011-05-29 09:23:08 UTC (rev 311542)
+++ php/php-src/branches/PHP_5_3/NEWS   2011-05-29 10:23:06 UTC (rev 311543)
@@ -44,6 +44,7 @@
   . Fixed bug #54866 (incorrect accounting for realpath_cache_size) (Dustin 
Ward)
   . Fixed bug #54721 (Different Hashes on Windows, BSD and Linux on wrong Salt 
size)
 (Pierre, os at irj dot ru)
+  . Fixed bug #53848 (fgetcsv() ignores spaces at beginnings of fields). (Ilia)
   . Fixed bug #50363 (Invalid parsing in convert.quoted-printable-decode 
filter).
 (slusarz at curecanti dot org)
   . Fixed bug #48465 (sys_get_temp_dir() possibly inconsistent when using

Modified: php/php-src/branches/PHP_5_3/ext/standard/file.c
===
--- php/php-src/branches/PHP_5_3/ext/standard/file.c2011-05-29 09:23:08 UTC 
(rev 311542)
+++ php/php-src/branches/PHP_5_3/ext/standard/file.c2011-05-29 10:23:06 UTC 
(rev 311543)
@@ -2196,30 +2196,17 @@
char *comp_end, *hunk_begin;

tptr = temp;
-
-   /* 1. Strip any leading space */
-   for (;;) {
-   inc_len = (bptr  limit ? (*bptr == '\0' ? 1: 
php_mblen(bptr, limit - bptr)): 0);
-   switch (inc_len) {
-   case -2:
-   case -1:
-   inc_len = 1;
-   php_mblen(NULL, 0);
-   break;
-   case 0:
-   goto quit_loop_1;
-   case 1:
-   if (!isspace((int)*(unsigned char 
*)bptr) || *bptr == delimiter) {
-   goto quit_loop_1;
-   }
-   break;
-   default:
-   goto quit_loop_1;
+   inc_len = (bptr  limit ? (*bptr == '\0' ? 1: php_mblen(bptr, 
limit - bptr)): 0);
+   if (inc_len == 1) {
+   char *tmp = bptr;
+   while (isspace((int)*(unsigned char *)tmp)) {
+   tmp++;
}
-   bptr += inc_len;
+   if (*tmp == enclosure) {
+   bptr = tmp;
+   }
}

-   quit_loop_1:
if (first_field  bptr == line_end) {
add_next_index_null(return_value);
break;

Added: php/php-src/branches/PHP_5_3/ext/standard/tests/file/bug53848.phpt
===
--- php/php-src/branches/PHP_5_3/ext/standard/tests/file/bug53848.phpt  
(rev 0)
+++ php/php-src/branches/PHP_5_3/ext/standard/tests/file/bug53848.phpt  
2011-05-29 10:23:06 UTC (rev 311543)
@@ -0,0 +1,25 @@
+--TEST--
+Bug #53848 (fgetcsv removes leading spaces from fields)
+--FILE--
+?php
+$file = dirname(__FILE__) . /bug39538.csv;
+@unlink($file);
+file_put_contents($file, a,b\n  c,  d);
+$fp = fopen($file, r);
+while ($l = fgetcsv($fp)) var_dump($l);
+fclose($fp);
+@unlink($file);
+?
+--EXPECT--
+array(2) {
+  [0]=
+  string(1) a
+  [1]=
+  string(1) b
+}
+array(2) {
+  [0]=
+  string(3)   c
+  [1]=
+  string(3)   d
+}

Modified: php/php-src/branches/PHP_5_4/ext/standard/file.c
===
--- php/php-src/branches/PHP_5_4/ext/standard/file.c2011-05-29 09:23:08 UTC 
(rev 311542)
+++ php/php-src/branches/PHP_5_4/ext/standard/file.c2011-05-29 10:23:06 UTC 
(rev 311543)
@@ -2098,29 +2098,17 @@

tptr = temp;

-   /* 1. Strip any leading space */
-   for (;;) {
-   inc_len = (bptr  limit ? (*bptr == '\0' ? 1: 
php_mblen(bptr, limit - bptr)): 0);
-   switch (inc_len) {
-   case -2:
- 

[PHP-CVS] svn: /php/php-src/ branches/PHP_5_3/NEWS branches/PHP_5_3/ext/dom/tests/bug54601.phpt branches/PHP_5_3/ext/libxml/libxml.c branches/PHP_5_4/ext/dom/tests/bug54601.phpt branches/PHP_5_4/ext/l

2011-05-29 Thread Hannes Magnusson
bjoriSun, 29 May 2011 11:39:49 +

Revision: http://svn.php.net/viewvc?view=revisionrevision=311544

Log:
Fixed bug #54601 (Removing the doctype node segfaults)

Bug: http://bugs.php.net/54601 (Assigned) Removing the doctype node segfaults
  
Changed paths:
U   php/php-src/branches/PHP_5_3/NEWS
A   php/php-src/branches/PHP_5_3/ext/dom/tests/bug54601.phpt
U   php/php-src/branches/PHP_5_3/ext/libxml/libxml.c
A   php/php-src/branches/PHP_5_4/ext/dom/tests/bug54601.phpt
U   php/php-src/branches/PHP_5_4/ext/libxml/libxml.c
A   php/php-src/trunk/ext/dom/tests/bug54601.phpt
U   php/php-src/trunk/ext/libxml/libxml.c

Modified: php/php-src/branches/PHP_5_3/NEWS
===
--- php/php-src/branches/PHP_5_3/NEWS   2011-05-29 10:23:06 UTC (rev 311543)
+++ php/php-src/branches/PHP_5_3/NEWS   2011-05-29 11:39:49 UTC (rev 311544)
@@ -91,6 +91,7 @@
 libraries). (Clint Byrum, Raphael)

 - libxml extension:
+  . Fixed bug #54601 (Removing the doctype node segfaults). (Hannes)
   . Fixed bug #54440 (libxml extension ignores default context). (Gustavo)

 - mbstring extension:

Added: php/php-src/branches/PHP_5_3/ext/dom/tests/bug54601.phpt
===
--- php/php-src/branches/PHP_5_3/ext/dom/tests/bug54601.phpt
(rev 0)
+++ php/php-src/branches/PHP_5_3/ext/dom/tests/bug54601.phpt2011-05-29 
11:39:49 UTC (rev 311544)
@@ -0,0 +1,30 @@
+--TEST--
+Segfault when removing the Doctype node
+--SKIPIF--
+?php require_once('skipif.inc'); ?
+--FILE--
+?php
+$xml =  XML
+?xml version='1.0' encoding='utf-8' ?
+!DOCTYPE set PUBLIC -//OASIS//DTD DocBook XML V5.0//EN 
http://www.docbook.org/xml/5.0/dtd/docbook.dtd; [
+!ENTITY foo 'foofootext/foo'
+!ENTITY bar 'barbartext/bar'
+]
+setfoo;bar;/set
+XML;
+
+$doc = new DOMDocument();
+$doc-loadXML($xml, LIBXML_NOENT);
+$n = $doc-doctype;
+$doc-removeChild($n);
+var_dump($n);
+print $doc-saveXML();
+?
+===DONE===
+?php exit(0); ?
+--EXPECTF--
+object(DOMDocumentType)#%d (0) {
+}
+?xml version=1.0 encoding=utf-8?
+setfoofootext/foobarbartext/bar/set
+===DONE===

Modified: php/php-src/branches/PHP_5_3/ext/libxml/libxml.c
===
--- php/php-src/branches/PHP_5_3/ext/libxml/libxml.c2011-05-29 10:23:06 UTC 
(rev 311543)
+++ php/php-src/branches/PHP_5_3/ext/libxml/libxml.c2011-05-29 11:39:49 UTC 
(rev 311544)
@@ -222,6 +222,7 @@
switch (node-type) {
/* Skip property freeing for the following 
types */
case XML_NOTATION_NODE:
+   case XML_ENTITY_DECL:
break;
case XML_ENTITY_REF_NODE:
php_libxml_node_free_list((xmlNodePtr) 
node-properties TSRMLS_CC);
@@ -233,7 +234,6 @@
case XML_ATTRIBUTE_DECL:
case XML_DTD_NODE:
case XML_DOCUMENT_TYPE_NODE:
-   case XML_ENTITY_DECL:
case XML_NAMESPACE_DECL:
case XML_TEXT_NODE:

php_libxml_node_free_list(node-children TSRMLS_CC);

Added: php/php-src/branches/PHP_5_4/ext/dom/tests/bug54601.phpt
===
--- php/php-src/branches/PHP_5_4/ext/dom/tests/bug54601.phpt
(rev 0)
+++ php/php-src/branches/PHP_5_4/ext/dom/tests/bug54601.phpt2011-05-29 
11:39:49 UTC (rev 311544)
@@ -0,0 +1,30 @@
+--TEST--
+Segfault when removing the Doctype node
+--SKIPIF--
+?php require_once('skipif.inc'); ?
+--FILE--
+?php
+$xml =  XML
+?xml version='1.0' encoding='utf-8' ?
+!DOCTYPE set PUBLIC -//OASIS//DTD DocBook XML V5.0//EN 
http://www.docbook.org/xml/5.0/dtd/docbook.dtd; [
+!ENTITY foo 'foofootext/foo'
+!ENTITY bar 'barbartext/bar'
+]
+setfoo;bar;/set
+XML;
+
+$doc = new DOMDocument();
+$doc-loadXML($xml, LIBXML_NOENT);
+$n = $doc-doctype;
+$doc-removeChild($n);
+var_dump($n);
+print $doc-saveXML();
+?
+===DONE===
+?php exit(0); ?
+--EXPECTF--
+object(DOMDocumentType)#%d (0) {
+}
+?xml version=1.0 encoding=utf-8?
+setfoofootext/foobarbartext/bar/set
+===DONE===

Modified: php/php-src/branches/PHP_5_4/ext/libxml/libxml.c
===
--- php/php-src/branches/PHP_5_4/ext/libxml/libxml.c2011-05-29 10:23:06 UTC 
(rev 311543)
+++ php/php-src/branches/PHP_5_4/ext/libxml/libxml.c2011-05-29 11:39:49 UTC 
(rev 311544)
@@ -224,6 +224,7 @@
switch (node-type) {
/* Skip property freeing for the following 
types */
case XML_NOTATION_NODE:

[PHP-CVS] svn: /php/php-src/ branches/PHP_5_3/NEWS branches/PHP_5_3/ext/standard/tests/streams/bug54946.phpt branches/PHP_5_3/main/streams/streams.c branches/PHP_5_4/ext/standard/tests/streams/bug5494

2011-05-29 Thread Hannes Magnusson
bjoriSun, 29 May 2011 12:29:19 +

Revision: http://svn.php.net/viewvc?view=revisionrevision=311545

Log:
Fixed bug #54946 (stream_get_contents infinite loop)

Bug: http://bugs.php.net/54946 (Open) stream_get_contents infinite loop
  
Changed paths:
U   php/php-src/branches/PHP_5_3/NEWS
A   php/php-src/branches/PHP_5_3/ext/standard/tests/streams/bug54946.phpt
U   php/php-src/branches/PHP_5_3/main/streams/streams.c
A   php/php-src/branches/PHP_5_4/ext/standard/tests/streams/bug54946.phpt
U   php/php-src/branches/PHP_5_4/main/streams/streams.c
A   php/php-src/trunk/ext/standard/tests/streams/bug54946.phpt
U   php/php-src/trunk/main/streams/streams.c

Modified: php/php-src/branches/PHP_5_3/NEWS
===
--- php/php-src/branches/PHP_5_3/NEWS   2011-05-29 11:39:49 UTC (rev 311544)
+++ php/php-src/branches/PHP_5_3/NEWS   2011-05-29 12:29:19 UTC (rev 311545)
@@ -151,6 +151,7 @@
 (Felipe)

 - Streams:
+  . Fixed bug #54946 (stream_get_contents infinite loop). (Hannes)
   . Fixed bug #54623 (Segfault when when writing to a persistent socket after
 closing a copy of the socket). (Gustavo)


Added: php/php-src/branches/PHP_5_3/ext/standard/tests/streams/bug54946.phpt
===
--- php/php-src/branches/PHP_5_3/ext/standard/tests/streams/bug54946.phpt   
(rev 0)
+++ php/php-src/branches/PHP_5_3/ext/standard/tests/streams/bug54946.phpt   
2011-05-29 12:29:19 UTC (rev 311545)
@@ -0,0 +1,40 @@
+--TEST--
+Bug#54946 stream_get_contents infinite loop
+--FILE--
+?php
+$filename = tempnam(sys_get_temp_dir(), phpbug);
+
+$stream = fopen($filename, w); // w or a
+$retval = stream_get_contents($stream, 1, 1);
+
+var_dump($retval);
+unlink($filename);
+
+
+
+$filename = tempnam(sys_get_temp_dir(), phpbug2);
+
+$stream = fopen($filename, a);
+$retval = stream_get_contents($stream, 1, 1);
+
+var_dump($retval);
+unlink($filename);
+
+
+
+$filename = tempnam(sys_get_temp_dir(), phpbug3);
+
+$stream = fopen($filename, a);
+fseek($stream, 1);
+$retval = stream_get_contents($stream, 1);
+
+var_dump($retval);
+unlink($filename);
+?
+===DONE===
+--EXPECT--
+string(0) 
+string(0) 
+string(0) 
+===DONE===
+

Modified: php/php-src/branches/PHP_5_3/main/streams/streams.c
===
--- php/php-src/branches/PHP_5_3/main/streams/streams.c 2011-05-29 11:39:49 UTC 
(rev 311544)
+++ php/php-src/branches/PHP_5_3/main/streams/streams.c 2011-05-29 12:29:19 UTC 
(rev 311545)
@@ -1291,6 +1291,9 @@
ptr = *buf = pemalloc_rel_orig(maxlen + 1, persistent);
while ((len  maxlen)  !php_stream_eof(src)) {
ret = php_stream_read(src, ptr, maxlen - len);
+   if (!ret) {
+   break;
+   }
len += ret;
ptr += ret;
}

Added: php/php-src/branches/PHP_5_4/ext/standard/tests/streams/bug54946.phpt
===
--- php/php-src/branches/PHP_5_4/ext/standard/tests/streams/bug54946.phpt   
(rev 0)
+++ php/php-src/branches/PHP_5_4/ext/standard/tests/streams/bug54946.phpt   
2011-05-29 12:29:19 UTC (rev 311545)
@@ -0,0 +1,40 @@
+--TEST--
+Bug#54946 stream_get_contents infinite loop
+--FILE--
+?php
+$filename = tempnam(sys_get_temp_dir(), phpbug);
+
+$stream = fopen($filename, w); // w or a
+$retval = stream_get_contents($stream, 1, 1);
+
+var_dump($retval);
+unlink($filename);
+
+
+
+$filename = tempnam(sys_get_temp_dir(), phpbug2);
+
+$stream = fopen($filename, a);
+$retval = stream_get_contents($stream, 1, 1);
+
+var_dump($retval);
+unlink($filename);
+
+
+
+$filename = tempnam(sys_get_temp_dir(), phpbug3);
+
+$stream = fopen($filename, a);
+fseek($stream, 1);
+$retval = stream_get_contents($stream, 1);
+
+var_dump($retval);
+unlink($filename);
+?
+===DONE===
+--EXPECT--
+string(0) 
+string(0) 
+string(0) 
+===DONE===
+

Modified: php/php-src/branches/PHP_5_4/main/streams/streams.c
===
--- php/php-src/branches/PHP_5_4/main/streams/streams.c 2011-05-29 11:39:49 UTC 
(rev 311544)
+++ php/php-src/branches/PHP_5_4/main/streams/streams.c 2011-05-29 12:29:19 UTC 
(rev 311545)
@@ -1362,6 +1362,9 @@
ptr = *buf = pemalloc_rel_orig(maxlen + 1, persistent);
while ((len  maxlen)  !php_stream_eof(src)) {
ret = php_stream_read(src, ptr, maxlen - len);
+   if (!ret) {
+   break;
+   }
len += ret;
ptr += ret;
}

Added: php/php-src/trunk/ext/standard/tests/streams/bug54946.phpt