From 472e198d4a1eaa581a0baff41a93a2efbf5c3916 Mon Sep 17 00:00:00 2001
From: Sergey Lyubka <valenok@gmail.com>
Date: Mon, 13 Jan 2014 21:31:18 +0000
Subject: [PATCH] Fixed mg_parse_header to allow NULL strings

---
 mongoose.c | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/mongoose.c b/mongoose.c
index 99b3af95b..00f0131f2 100644
--- a/mongoose.c
+++ b/mongoose.c
@@ -2986,10 +2986,10 @@ int parse_header(const char *str, int str_len, const char *var_name, char *buf,
   int ch = ' ', len = 0, n = strlen(var_name);
   const char *p, *end = str + str_len, *s = NULL;
 
-  if (buf != NULL) buf[0] = '\0';
+  if (buf != NULL && buf_size > 0) buf[0] = '\0';
 
   // Find where variable starts
-  for (s = str; s != NULL && &s[n] < end; s++) {
+  for (s = str; s != NULL && s + n < end; s++) {
     if ((s == str || s[-1] == ' ') && s[n] == '=' &&
         !memcmp(s, var_name, n)) break;
   }
@@ -3014,9 +3014,9 @@ int parse_header(const char *str, int str_len, const char *var_name, char *buf,
   return len;
 }
 
-int mg_parse_header(const char *str, const char *var_name, char *buf,
+int mg_parse_header(const char *s, const char *var_name, char *buf,
                     size_t buf_size) {
-  return parse_header(str, strlen(str), var_name, buf, buf_size);
+  return parse_header(s, s == NULL ? 0 : strlen(s), var_name, buf, buf_size);
 }
 
 #ifdef USE_LUA
@@ -3426,7 +3426,7 @@ static void process_request(struct connection *conn) {
                                            &conn->mg_conn);
   }
 
-  DBG(("%p %d %d", conn, conn->request_len, io->len));
+  DBG(("%p %d %d [%.*s]", conn, conn->request_len, io->len, io->len, io->buf));
   if (conn->request_len < 0 ||
       (conn->request_len > 0 && !is_valid_uri(conn->mg_conn.uri))) {
     send_http_error(conn, 400, NULL);
-- 
GitLab