diff options
author | Nick White <git@njw.me.uk> | 2012-03-29 11:37:03 +0100 |
---|---|---|
committer | Nick White <git@njw.me.uk> | 2012-03-29 11:37:03 +0100 |
commit | 4bfac013e70271e8273e41d2fa609d48db83a3b3 (patch) | |
tree | f91773fcaaa1a50696e56a03ee579dfb26834c2c | |
parent | 35e12cdf263178f62ef2fd7b9b2f3e5a9ad44fcf (diff) |
Use strncpy and strncat more safely
-rw-r--r-- | getabook.c | 3 | ||||
-rw-r--r-- | getbnbook.c | 3 | ||||
-rw-r--r-- | getgbook.c | 3 | ||||
-rw-r--r-- | util.c | 2 |
4 files changed, 7 insertions, 4 deletions
@@ -158,7 +158,8 @@ int main(int argc, char *argv[]) return 1; } - strncpy(bookid, argv[argc-1], STRMAX); + strncpy(bookid, argv[argc-1], STRMAX-1); + bookid[STRMAX-1] = '\0'; bookdir = argv[argc-1]; pages = malloc(sizeof(*pages) * MAXPAGES); diff --git a/getbnbook.c b/getbnbook.c index 3b044d6..d228069 100644 --- a/getbnbook.c +++ b/getbnbook.c @@ -106,7 +106,8 @@ int main(int argc, char *argv[]) return 1; } - strncpy(bookid, argv[argc-1], STRMAX); + strncpy(bookid, argv[argc-1], STRMAX-1); + bookid[STRMAX-1] = '\0'; bookdir = argv[argc-1]; /* get cookie */ @@ -187,7 +187,8 @@ int main(int argc, char *argv[]) free(tmp); } - strncpy(bookid, argv[argc-1], STRMAX); + strncpy(bookid, argv[argc-1], STRMAX-1); + bookid[STRMAX-1] = '\0'; bookdir = argv[argc-1]; pages = malloc(sizeof(*pages) * MAXPAGES); @@ -91,7 +91,7 @@ int get(char *host, char *path, char *sendcookie, char *savecookie, char **buf) t2 = h; if(savecookie != NULL) { while((t2 = strstr(t2, "Set-Cookie: ")) && sscanf(t2, m, c)) { - strncat(savecookie, c, COOKIEMAX); + strncat(savecookie, c, COOKIEMAX - strlen(savecookie) - 1); t2++; } } |