diff options
author | corvid <corvid@lavabit.com> | 2010-03-04 01:46:50 +0000 |
---|---|---|
committer | corvid <corvid@lavabit.com> | 2010-03-04 01:46:50 +0000 |
commit | 3833097889d6cb01f320278f50d8098c1cd25e76 (patch) | |
tree | 72c7ec584694b41f7561d168272147cb3f5ec6a7 /dpi | |
parent | 2e8e9e1ff52df336f5126082b2792934f022e5cc (diff) |
fix dpip cmd leak
Diffstat (limited to 'dpi')
-rw-r--r-- | dpi/cookies.c | 17 |
1 files changed, 9 insertions, 8 deletions
diff --git a/dpi/cookies.c b/dpi/cookies.c index 28647770..52d932c1 100644 --- a/dpi/cookies.c +++ b/dpi/cookies.c @@ -1274,7 +1274,7 @@ static CookieControlAction Cookies_control_check_domain(const char *domain) */ static int srv_parse_tok(Dsh *sh, ClientInfo *client, char *Buf) { - char *cmd, *cookie, *host, *path, *scheme; + char *cmd, *cookie, *host, *path; int ret = 1; size_t BufSize = strlen(Buf); @@ -1293,31 +1293,31 @@ static int srv_parse_tok(Dsh *sh, ClientInfo *client, char *Buf) MSG("(pid %d): Got DpiBye.\n", (int)getpid()); exit(0); - } else if (cmd && strcmp(cmd, "set_cookie") == 0) { + } else if (strcmp(cmd, "set_cookie") == 0) { int st; char *date; - dFree(cmd); cookie = a_Dpip_get_attr_l(Buf, BufSize, "cookie"); host = a_Dpip_get_attr_l(Buf, BufSize, "host"); path = a_Dpip_get_attr_l(Buf, BufSize, "path"); date = a_Dpip_get_attr_l(Buf, BufSize, "date"); st = Cookies_set(cookie, host, path, date); + + dFree(cmd); cmd = a_Dpip_build_cmd("cmd=%s msg=%s", "set_cookie_answer", st == 0 ? "ok" : "not set"); a_Dpip_dsh_write_str(sh, 1, cmd); - dFree(cmd); dFree(date); dFree(path); dFree(host); dFree(cookie); ret = 2; - } else if (cmd && strcmp(cmd, "get_cookie") == 0) { - dFree(cmd); - scheme = a_Dpip_get_attr_l(Buf, BufSize, "scheme"); + } else if (strcmp(cmd, "get_cookie") == 0) { + char *scheme = a_Dpip_get_attr_l(Buf, BufSize, "scheme"); + host = a_Dpip_get_attr_l(Buf, BufSize, "host"); path = a_Dpip_get_attr_l(Buf, BufSize, "path"); @@ -1326,6 +1326,7 @@ static int srv_parse_tok(Dsh *sh, ClientInfo *client, char *Buf) dFree(path); dFree(host); + dFree(cmd); cmd = a_Dpip_build_cmd("cmd=%s cookie=%s", "get_cookie_answer", cookie); if (a_Dpip_dsh_write_str(sh, 1, cmd)) { @@ -1335,8 +1336,8 @@ static int srv_parse_tok(Dsh *sh, ClientInfo *client, char *Buf) ret = 2; } dFree(cookie); - dFree(cmd); } + dFree(cmd); return ret; } |