mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-11-10 21:23:58 +01:00
arguments in EXTENDCIRCUIT were reversed
and an error message was misleading and we were leaking memory on some errors more bugs remain svn:r4585
This commit is contained in:
parent
2cff73e7a4
commit
fe7535c5e2
@ -1383,25 +1383,26 @@ handle_control_extendcircuit(connection_t *conn, uint32_t len,
|
||||
goto done;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
} else { /* v1 */
|
||||
smartlist_t *args;
|
||||
args = smartlist_create();
|
||||
smartlist_split_string(args, body, " ",
|
||||
SPLIT_SKIP_SPACE|SPLIT_IGNORE_BLANK, 0);
|
||||
if (smartlist_len(args)<2)
|
||||
connection_printf_to_buf(conn,"512 Missing argument to ATTACHSTREAM\r\n");
|
||||
connection_printf_to_buf(conn,"512 Missing argument to EXTENDCIRCUIT\r\n");
|
||||
|
||||
smartlist_split_string(router_nicknames, smartlist_get(args,0), ",", 0, 0);
|
||||
zero_circ = !strcmp("0", (char*)smartlist_get(args,1));
|
||||
if (!zero_circ && !(circ = get_circ(smartlist_get(args,1)))) {
|
||||
zero_circ = !strcmp("0", (char*)smartlist_get(args,0));
|
||||
if (!zero_circ && !(circ = get_circ(smartlist_get(args,0)))) {
|
||||
connection_printf_to_buf(conn, "552 Unknown circuit \"%s\"\r\n",
|
||||
(char*)smartlist_get(args, 1));
|
||||
(char*)smartlist_get(args, 0));
|
||||
}
|
||||
smartlist_split_string(router_nicknames, smartlist_get(args,1), ",", 0, 0);
|
||||
|
||||
SMARTLIST_FOREACH(args, char *, cp, tor_free(cp));
|
||||
smartlist_free(args);
|
||||
if (!zero_circ && !circ)
|
||||
return 0;
|
||||
if (!zero_circ && !circ) {
|
||||
goto done;
|
||||
}
|
||||
}
|
||||
|
||||
routers = smartlist_create();
|
||||
@ -1468,7 +1469,8 @@ handle_control_extendcircuit(connection_t *conn, uint32_t len,
|
||||
done:
|
||||
SMARTLIST_FOREACH(router_nicknames, char *, n, tor_free(n));
|
||||
smartlist_free(router_nicknames);
|
||||
smartlist_free(routers);
|
||||
if (routers)
|
||||
smartlist_free(routers);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user