summaryrefslogtreecommitdiff
path: root/dpi/cookies.c
diff options
context:
space:
mode:
authorcorvid <corvid@lavabit.com>2010-03-04 01:46:50 +0000
committercorvid <corvid@lavabit.com>2010-03-04 01:46:50 +0000
commit3833097889d6cb01f320278f50d8098c1cd25e76 (patch)
tree72c7ec584694b41f7561d168272147cb3f5ec6a7 /dpi/cookies.c
parent2e8e9e1ff52df336f5126082b2792934f022e5cc (diff)
fix dpip cmd leak
Diffstat (limited to 'dpi/cookies.c')
-rw-r--r--dpi/cookies.c17
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;
}