]> granicus.if.org Git - curl/commitdiff
gopher: don't send NUL byte
authorOrange Tsai <orange@chroot.org>
Thu, 1 Oct 2015 15:17:58 +0000 (23:17 +0800)
committerDaniel Stenberg <daniel@haxx.se>
Thu, 1 Oct 2015 16:15:11 +0000 (18:15 +0200)
Closes #466

lib/gopher.c

index 954cad8e05403125b6dca8fbcda0612a3f034a3b..e23425506a8773df4d543824eafebff1a51f1ed7 100644 (file)
@@ -83,16 +83,18 @@ static CURLcode gopher_do(struct connectdata *conn, bool *done)
   char *sel;
   char *sel_org = NULL;
   ssize_t amount, k;
+  int len;
 
   *done = TRUE; /* unconditionally */
 
   /* Create selector. Degenerate cases: / and /1 => convert to "" */
-  if(strlen(path) <= 2)
+  if(strlen(path) <= 2) {
     sel = (char *)"";
+    len = (int)strlen(sel);
+  }
   else {
     char *newp;
     size_t j, i;
-    int len;
 
     /* Otherwise, drop / and the first character (i.e., item type) ... */
     newp = path;
@@ -113,7 +115,7 @@ static CURLcode gopher_do(struct connectdata *conn, bool *done)
 
   /* We use Curl_write instead of Curl_sendf to make sure the entire buffer is
      sent, which could be sizeable with long selectors. */
-  k = curlx_uztosz(strlen(sel));
+  k = curlx_uztosz(len);
 
   for(;;) {
     result = Curl_write(conn, sockfd, sel, k, &amount);