summaryrefslogtreecommitdiff
path: root/lib/gopher.c
diff options
context:
space:
mode:
authorOrange Tsai <orange@chroot.org>2015-10-01 23:17:58 +0800
committerDaniel Stenberg <daniel@haxx.se>2015-10-01 18:15:11 +0200
commit5bf36ea30d38b9e00029180ddbab73cab94a2195 (patch)
tree901fe0ddc2dc91a9c79283eaa4b28cbabdddb6db /lib/gopher.c
parentc6ff538ebd099d7ebeea774b9dfbbfeddfe3707b (diff)
downloadcurl-5bf36ea30d38b9e00029180ddbab73cab94a2195.tar.gz
gopher: don't send NUL byte
Closes #466
Diffstat (limited to 'lib/gopher.c')
-rw-r--r--lib/gopher.c8
1 files 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);