deps: update http_parser to 2.2.1
authorFedor Indutny <fedor.indutny@gmail.com>
Tue, 28 Jan 2014 23:23:52 +0000 (03:23 +0400)
committerFedor Indutny <fedor.indutny@gmail.com>
Tue, 28 Jan 2014 23:23:52 +0000 (03:23 +0400)
Main changes:

  * Fixed content-length and chunk-size overflow test

deps/http_parser/.gitignore
deps/http_parser/AUTHORS
deps/http_parser/Makefile
deps/http_parser/http_parser.c
deps/http_parser/http_parser.h
deps/http_parser/test.c

index 5d12d15..594f304 100644 (file)
@@ -12,3 +12,16 @@ parsertrace_g
 *.Makefile
 *.so.*
 *.a
+
+
+# Visual Studio uglies
+*.suo
+*.sln
+*.vcxproj
+*.vcxproj.filters
+*.vcxproj.user
+*.opensdf
+*.ncrunchsolution*
+*.sdf
+*.vsp
+*.psess
index 3527d16..c3c2b45 100644 (file)
@@ -45,3 +45,5 @@ Chris Dickinson <christopher.s.dickinson@gmail.com>
 Uli Köhler <ukoehler@btronik.de>
 Charlie Somerville <charlie@charliesomerville.com>
 Fedor Indutny <fedor.indutny@gmail.com>
+runner <runner.mei@gmail.com>
+Alexis Campailla <alexis@janeasystems.com>
index 0fd07d8..504c525 100644 (file)
@@ -19,7 +19,7 @@
 # IN THE SOFTWARE.
 
 PLATFORM ?= $(shell sh -c 'uname -s | tr "[A-Z]" "[a-z]"')
-SONAME ?= libhttp_parser.so.2.2
+SONAME ?= libhttp_parser.so.2.2.1
 
 CC?=gcc
 AR?=ar
index b9dabb8..a131a38 100644 (file)
@@ -1509,8 +1509,8 @@ size_t http_parser_execute (http_parser *parser,
             t *= 10;
             t += ch - '0';
 
-            /* Overflow? */
-            if (t < parser->content_length || t == ULLONG_MAX) {
+            /* Overflow? Test against a conservative limit for simplicity. */
+            if ((ULLONG_MAX - 10) / 10 < parser->content_length) {
               SET_ERRNO(HPE_INVALID_CONTENT_LENGTH);
               goto error;
             }
@@ -1782,8 +1782,8 @@ size_t http_parser_execute (http_parser *parser,
         t *= 16;
         t += unhex_val;
 
-        /* Overflow? */
-        if (t < parser->content_length || t == ULLONG_MAX) {
+        /* Overflow? Test against a conservative limit for simplicity. */
+        if ((ULLONG_MAX - 16) / 16 < parser->content_length) {
           SET_ERRNO(HPE_INVALID_CONTENT_LENGTH);
           goto error;
         }
index 1a91c23..3e28816 100644 (file)
@@ -27,7 +27,7 @@ extern "C" {
 /* Also update SONAME in the Makefile whenever you change these. */
 #define HTTP_PARSER_VERSION_MAJOR 2
 #define HTTP_PARSER_VERSION_MINOR 2
-#define HTTP_PARSER_VERSION_PATCH 0
+#define HTTP_PARSER_VERSION_PATCH 1
 
 #include <sys/types.h>
 #if defined(_WIN32) && !defined(__MINGW32__) && (!defined(_MSC_VER) || _MSC_VER<1600)
index 6a05b0d..9aaa5ad 100644 (file)
@@ -2938,7 +2938,7 @@ test_header_content_length_overflow_error (void)
   "HTTP/1.1 200 OK\r\n"                                                       \
   "Content-Length: " #size "\r\n"                                             \
   "\r\n"
-  const char a[] = X(18446744073709551614); /* 2^64-2 */
+  const char a[] = X(1844674407370955160);  /* 2^64 / 10 - 1 */
   const char b[] = X(18446744073709551615); /* 2^64-1 */
   const char c[] = X(18446744073709551616); /* 2^64   */
 #undef X
@@ -2956,7 +2956,7 @@ test_chunk_content_length_overflow_error (void)
     "\r\n"                                                                    \
     #size "\r\n"                                                              \
     "..."
-  const char a[] = X(FFFFFFFFFFFFFFFE);  /* 2^64-2 */
+  const char a[] = X(FFFFFFFFFFFFFFE);   /* 2^64 / 16 - 1 */
   const char b[] = X(FFFFFFFFFFFFFFFF);  /* 2^64-1 */
   const char c[] = X(10000000000000000); /* 2^64   */
 #undef X