diff --git a/sys/src/cmd/webfs/fns.h b/sys/src/cmd/webfs/fns.h index 747ebd729..9cd6f2ae2 100644 --- a/sys/src/cmd/webfs/fns.h +++ b/sys/src/cmd/webfs/fns.h @@ -2,6 +2,8 @@ void* emalloc(int n); char* estrdup(char *s); +void nstrcpy(char *to, char *from, int n); + Key* addkey(Key *h, char *key, char *val); Key* delkey(Key *h, char *key); char* lookkey(Key *k, char *key); diff --git a/sys/src/cmd/webfs/fs.c b/sys/src/cmd/webfs/fs.c index 2d2c7c063..ab21bce7a 100644 --- a/sys/src/cmd/webfs/fs.c +++ b/sys/src/cmd/webfs/fs.c @@ -310,7 +310,7 @@ fswalk1(Fid *fid, char *name, Qid *qid) Key *k; for(k = f->client->qbody->hdr; k; k = k->next){ - strncpy(buf, k->key, sizeof(buf)); + nstrcpy(buf, k->key, sizeof(buf)); if(!strcmp(name, fshdrname(buf))) break; } @@ -598,7 +598,7 @@ clientctl(Client *cl, char *ctl, char *arg) } else if(!strcmp(ctl, "request")){ p = cl->request; - strncpy(p, arg, sizeof(cl->request)); + nstrcpy(p, arg, sizeof(cl->request)); for(; *p && isalpha(*p); p++) *p = toupper(*p); *p = 0; @@ -624,7 +624,7 @@ clientctl(Client *cl, char *ctl, char *arg) nil, }; for(t = tab; *t; t++){ - strncpy(buf, *t, sizeof(buf)); + nstrcpy(buf, *t, sizeof(buf)); if(!strcmp(ctl, fshdrname(buf))){ cl->hdr = delkey(cl->hdr, *t); if(arg && *arg) diff --git a/sys/src/cmd/webfs/http.c b/sys/src/cmd/webfs/http.c index 423aab124..9b951e4fe 100644 --- a/sys/src/cmd/webfs/http.c +++ b/sys/src/cmd/webfs/http.c @@ -108,7 +108,7 @@ hdial(Url *u) h->keep = 1; h->len = 0; h->fd = fd; - strncpy(h->addr, addr, sizeof(h->addr)); + nstrcpy(h->addr, addr, sizeof(h->addr)); return h; } @@ -441,7 +441,7 @@ http(char *m, Url *u, Key *shdr, Buq *qbody, Buq *qpost) incref(qbody); if(qpost) incref(qpost); - strncpy(method, m, sizeof(method)); + nstrcpy(method, m, sizeof(method)); switch(rfork(RFPROC|RFMEM|RFNOWAIT)){ default: return; @@ -640,7 +640,7 @@ http(char *m, Url *u, Key *shdr, Buq *qbody, Buq *qpost) if(cistrcmp(s, "ICY")) break; } - strncpy(status, x, sizeof(status)); + nstrcpy(status, x, sizeof(status)); continue; } if((k = parsehdr(s)) == nil) @@ -730,7 +730,7 @@ http(char *m, Url *u, Key *shdr, Buq *qbody, Buq *qpost) qpost = nil; } if(cistrcmp(method, "HEAD")) - strncpy(method, "GET", sizeof(method)); + nstrcpy(method, "GET", sizeof(method)); case 301: /* Moved Permanently */ case 307: /* Temporary Redirect */ case 308: /* Resume Incomplete */ diff --git a/sys/src/cmd/webfs/sub.c b/sys/src/cmd/webfs/sub.c index 274ef0b08..b8ca1e3ac 100644 --- a/sys/src/cmd/webfs/sub.c +++ b/sys/src/cmd/webfs/sub.c @@ -26,6 +26,13 @@ estrdup(char *s) return s; } +void +nstrcpy(char *to, char *from, int n) +{ + strncpy(to, from, n); + to[n-1] = 0; +} + Key* addkey(Key *h, char *key, char *val) {