]> granicus.if.org Git - php/commitdiff
Fixed bug #77608
authorNikita Popov <nikita.ppv@gmail.com>
Tue, 12 Feb 2019 09:49:20 +0000 (10:49 +0100)
committerNikita Popov <nikita.ppv@gmail.com>
Tue, 12 Feb 2019 09:49:20 +0000 (10:49 +0100)
Remove special handling of doubles and escape them as usual instead.

NEWS
ext/standard/http.c
ext/standard/tests/strings/bug77608.phpt [new file with mode: 0644]

diff --git a/NEWS b/NEWS
index 533b04e5ee743dcae6ace02d6a988796fc341259..6fa239021d84b3784952f675cddddc49c534c6f8 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -20,6 +20,8 @@ PHP                                                                        NEWS
 - Standard:
   . Fixed bug #77552 (Unintialized php_stream_statbuf in stat functions).
     (John Stevenson)
+  . Fixed bug #77608 (http_build_query doesn't encode "+" in a float number).
+    (Nikita)
 
 07 Feb 2019, PHP 7.2.15
 
index f73d4cac7eb5ad279999f0dc77047ad816c58238..c11c940abed9bd3916bfeb193160f15e1a59c645 100644 (file)
@@ -192,15 +192,6 @@ PHPAPI int php_url_encode_hash_ex(HashTable *ht, smart_str *formstr,
                                case IS_TRUE:
                                        smart_str_appendl(formstr, "1", sizeof("1")-1);
                                        break;
-                               case IS_DOUBLE:
-                                       {
-                                               char *ekey;
-                                               size_t ekey_len;
-                                               ekey_len = spprintf(&ekey, 0, "%.*G", (int) EG(precision), Z_DVAL_P(zdata));
-                                               smart_str_appendl(formstr, ekey, ekey_len);
-                                               efree(ekey);
-                                       }
-                                       break;
                                default:
                                        {
                                                zend_string *ekey;
diff --git a/ext/standard/tests/strings/bug77608.phpt b/ext/standard/tests/strings/bug77608.phpt
new file mode 100644 (file)
index 0000000..77bfb74
--- /dev/null
@@ -0,0 +1,11 @@
+--TEST--
+Bug #77608: http_build_query doesn't encode "+" in a float number
+--FILE--
+<?php
+
+$a = ["x" => 1E+14, "y" => "1E+14"];
+echo http_build_query($a);
+
+?>
+--EXPECT--
+x=1.0E%2B14&y=1E%2B14