From 272d76f2b1acac584ac654e64be1df2bec11a393 Mon Sep 17 00:00:00 2001 From: cinap_lenrek Date: Thu, 29 Dec 2011 17:56:28 +0100 Subject: webcookies: fix memory leak, remove fragment from url --- sys/src/cmd/webcookies.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) (limited to 'sys/src/cmd/webcookies.c') diff --git a/sys/src/cmd/webcookies.c b/sys/src/cmd/webcookies.c index 1ae358cff..a4d74cc79 100644 --- a/sys/src/cmd/webcookies.c +++ b/sys/src/cmd/webcookies.c @@ -407,7 +407,7 @@ syncjar(Jar *jar) purgejar(jar); - b = Bopen(jar->file, OWRITE); + b = Bopen(jar->file, OTRUNC|OWRITE); if(b == nil){ if(debug) fprint(2, "Bopen write %s: %r", jar->file); @@ -467,6 +467,8 @@ closejar(Jar *jar) { int i; + if(jar == nil) + return; expirejar(jar, 0); if(syncjar(jar) < 0) fprint(2, "warning: cannot rewrite cookie jar: %r\n"); @@ -475,6 +477,7 @@ closejar(Jar *jar) freecookie(&jar->c[i]); free(jar->file); + free(jar->c); free(jar); } @@ -948,6 +951,7 @@ parsecookie(Cookie *c, char *p, char **e, int isns, char *dom, char *path) if(cistrcmp(attr, "secure") == 0) c->secure = 1; } + *e = p; if(c->dom) c->explicitdom = 1; @@ -957,13 +961,14 @@ parsecookie(Cookie *c, char *p, char **e, int isns, char *dom, char *path) c->explicitpath = 1; else{ c->path = path; + if((t = strchr(c->path, '#')) != 0) + *t = '\0'; if((t = strchr(c->path, '?')) != 0) *t = '\0'; if((t = strrchr(c->path, '/')) != 0) *t = '\0'; } c->netscapestyle = isns; - *e = p; return nil; } -- cgit v1.2.3