]> granicus.if.org Git - php/commitdiff
- MFH fix truncation of large values on 64-bit systems in http_build_query
authorBrian Shire <shire@php.net>
Thu, 10 Jan 2008 20:29:12 +0000 (20:29 +0000)
committerBrian Shire <shire@php.net>
Thu, 10 Jan 2008 20:29:12 +0000 (20:29 +0000)
ext/standard/http.c

index 9f4923179064e625a891abbc800b95bbe605e4e3..09253145ab0168460106f5cc9ed16499849f3c9f 100644 (file)
@@ -105,7 +105,7 @@ PHPAPI int php_url_encode_hash_ex(HashTable *ht, smart_str *formstr,
                                *p = '\0';
                        } else {
                                /* Is an integer key */
-                               ekey_len = spprintf(&ekey, 12, "%ld", idx);
+                               ekey_len = spprintf(&ekey, 0, "%ld", idx);
                                newprefix_len = key_prefix_len + num_prefix_len + ekey_len + key_suffix_len + 3 /* %5B */;
                                newprefix = emalloc(newprefix_len + 1);
                                p = newprefix;
@@ -153,7 +153,7 @@ PHPAPI int php_url_encode_hash_ex(HashTable *ht, smart_str *formstr,
                                if (num_prefix) {
                                        smart_str_appendl(formstr, num_prefix, num_prefix_len);
                                }
-                               ekey_len = spprintf(&ekey, 12, "%ld", idx);
+                               ekey_len = spprintf(&ekey, 0, "%ld", idx);
                                smart_str_appendl(formstr, ekey, ekey_len);
                                efree(ekey);
                        }
@@ -165,10 +165,10 @@ PHPAPI int php_url_encode_hash_ex(HashTable *ht, smart_str *formstr,
                                        break;
                                case IS_LONG:
                                case IS_BOOL:
-                                       ekey_len = spprintf(&ekey, 12, "%ld", Z_LVAL_PP(zdata));
+                                       ekey_len = spprintf(&ekey, 0, "%ld", Z_LVAL_PP(zdata));
                                        break;
                                case IS_DOUBLE:
-                                       ekey_len = spprintf(&ekey, 48, "%.*G", (int) EG(precision), Z_DVAL_PP(zdata));
+                                       ekey_len = spprintf(&ekey, 0, "%.*G", (int) EG(precision), Z_DVAL_PP(zdata));
                                        break;
                                default:
                                        /* fall back on convert to string */