cjdns: Fix dangling pointer bug (#964)

Maintainer: @wfleurant
Compile tested: builds for x86_64
Run tested: Build only testing

Description: same build error seen on my machine as seen in #958
Whereas #961 removes the compiler warning, this fixes the underlying problem in the code.

Signed-off-by: Caleb James DeLisle <cjd@cjdns.fr>
This commit is contained in:
Caleb James DeLisle 2023-04-18 15:14:08 +02:00 committed by GitHub
parent e2eb84791c
commit a26e3441d8
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 23 additions and 0 deletions

View File

@ -0,0 +1,23 @@
--- a/net/SwitchPinger_admin.c
+++ b/net/SwitchPinger_admin.c
@@ -78,8 +78,10 @@ static void adminPing(Dict* args, void*
uint32_t timeout = (timeoutPtr) ? *timeoutPtr : DEFAULT_TIMEOUT;
uint64_t path;
String* err = NULL;
+ String* pathNotParsable = String_CONST("path was not parsable.");
+ String* noOpenSlots = String_CONST("no open slots to store ping, try later.");
if (pathStr->len != 19 || AddrTools_parsePath(&path, (uint8_t*) pathStr->bytes)) {
- err = String_CONST("path was not parsable.");
+ err = pathNotParsable;
} else {
struct SwitchPinger_Ping* ping = SwitchPinger_newPing(path,
data,
@@ -89,7 +91,7 @@ static void adminPing(Dict* args, void*
context->switchPinger);
if (keyPing && *keyPing) { ping->type = SwitchPinger_Type_KEYPING; }
if (!ping) {
- err = String_CONST("no open slots to store ping, try later.");
+ err = noOpenSlots;
} else {
ping->onResponseContext = Allocator_clone(ping->pingAlloc, (&(struct Ping) {
.context = context,