From 5bf36ea30d38b9e00029180ddbab73cab94a2195 Mon Sep 17 00:00:00 2001 From: Orange Tsai Date: Thu, 1 Oct 2015 23:17:58 +0800 Subject: [PATCH] gopher: don't send NUL byte Closes #466 --- lib/gopher.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/lib/gopher.c b/lib/gopher.c index 954cad8e0..e23425506 100644 --- a/lib/gopher.c +++ b/lib/gopher.c @@ -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);