cjdns: Fix dangling pointer bug (#964)
[feed/routing.git] / cjdns / patches / 030-fix-invalid-pointer.patch
1 --- a/net/SwitchPinger_admin.c
2 +++ b/net/SwitchPinger_admin.c
3 @@ -78,8 +78,10 @@ static void adminPing(Dict* args, void*
4 uint32_t timeout = (timeoutPtr) ? *timeoutPtr : DEFAULT_TIMEOUT;
5 uint64_t path;
6 String* err = NULL;
7 + String* pathNotParsable = String_CONST("path was not parsable.");
8 + String* noOpenSlots = String_CONST("no open slots to store ping, try later.");
9 if (pathStr->len != 19 || AddrTools_parsePath(&path, (uint8_t*) pathStr->bytes)) {
10 - err = String_CONST("path was not parsable.");
11 + err = pathNotParsable;
12 } else {
13 struct SwitchPinger_Ping* ping = SwitchPinger_newPing(path,
14 data,
15 @@ -89,7 +91,7 @@ static void adminPing(Dict* args, void*
16 context->switchPinger);
17 if (keyPing && *keyPing) { ping->type = SwitchPinger_Type_KEYPING; }
18 if (!ping) {
19 - err = String_CONST("no open slots to store ping, try later.");
20 + err = noOpenSlots;
21 } else {
22 ping->onResponseContext = Allocator_clone(ping->pingAlloc, (&(struct Ping) {
23 .context = context,