From 81f738af3fc4672ea06dbbc2a65a9150c27c693b Mon Sep 17 00:00:00 2001
From: Alexander Alashkin <alexander.alashkin@cesanta.com>
Date: Thu, 17 Nov 2016 11:55:08 +0100
Subject: [PATCH] Fix mg_http_common_url_parse

PUBLISHED_FROM=51c44c445309aa0850b227949a0a0a6be433d08c
---
 mongoose.c | 13 +++++++------
 1 file changed, 7 insertions(+), 6 deletions(-)

diff --git a/mongoose.c b/mongoose.c
index 39902172a..28842fef8 100644
--- a/mongoose.c
+++ b/mongoose.c
@@ -7295,6 +7295,7 @@ MG_INTERNAL int mg_http_common_url_parse(const char *url, const char *schema,
   int addr_len = 0;
   int auth_sep_pos = -1;
   int user_sep_pos = -1;
+  int port_pos = -1;
   (void) user;
   (void) pass;
 
@@ -7319,19 +7320,19 @@ MG_INTERNAL int mg_http_common_url_parse(const char *url, const char *schema,
     }
     if (*url == '@') {
       auth_sep_pos = addr_len;
-      user_sep_pos = *port_i;
-      *port_i = -1;
+      user_sep_pos = port_pos;
+      port_pos = -1;
     }
-    if (*url == ':') *port_i = addr_len;
+    if (*url == ':') port_pos = addr_len;
     (*addr)[addr_len++] = *url;
     (*addr)[addr_len] = '\0';
     url++;
   }
 
   if (addr_len == 0) goto cleanup;
-  if (*port_i < 0) {
-    *port_i = addr_len;
-    strcpy(*addr + *port_i, *use_ssl ? ":443" : ":80");
+  if (port_pos < 0) {
+    *port_i = *use_ssl ? 443 : 80;
+    addr_len += sprintf(*addr + addr_len, ":%d", *port_i);
   } else {
     *port_i = -1;
   }
-- 
GitLab