From a77ae0e897fd09a80c0c11b5c56fbf595b77726b Mon Sep 17 00:00:00 2001 From: Burkov Egor Date: Tue, 18 Feb 2025 13:57:49 +0300 Subject: [PATCH 1/4] fix: some nulls checks --- src/conn.c | 6 ++++-- src/sub.c | 2 +- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/src/conn.c b/src/conn.c index ae121bde6..220b74ae7 100644 --- a/src/conn.c +++ b/src/conn.c @@ -580,7 +580,7 @@ _processInfo(natsConnection *nc, char *info, int len) tlsName = (const char*) nc->cur->url->host; s = natsSrvPool_addNewURLs(nc->srvPool, - nc->cur->url, + nc->cur ? nc->cur->url : NULL, nc->info.connectURLs, nc->info.connectURLsCount, tlsName, @@ -3352,7 +3352,9 @@ _processUrlString(natsOptions *opts, const char *urls) serverUrls = (char**) NATS_CALLOC(count + 1, sizeof(char*)); if (serverUrls == NULL) - s = NATS_NO_MEMORY; + { + return NATS_NO_MEMORY; + } if (s == NATS_OK) { urlsCopy = NATS_STRDUP(urls); diff --git a/src/sub.c b/src/sub.c index 851577426..1a19a5376 100644 --- a/src/sub.c +++ b/src/sub.c @@ -661,7 +661,7 @@ natsSub_nextMsg(natsMsg **nextMsg, natsSubscription *sub, int64_t timeout, bool removeSub = true; s = NATS_TIMEOUT; } - else + else if (msg != NULL) { sub->ownDispatcher.queue.head = msg->next; From 9cadfc2d846e664df8bff6d6d55c63325bc52951 Mon Sep 17 00:00:00 2001 From: Burkov Egor Date: Tue, 18 Feb 2025 14:54:44 +0300 Subject: [PATCH 2/4] fix: add null check for thread if oci already done --- src/js.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/js.c b/src/js.c index defe4296f..65288f8ae 100644 --- a/src/js.c +++ b/src/js.c @@ -3454,8 +3454,10 @@ _recreateOrderedCons(void *closure) NATS_FREE(oci->ndlv); NATS_FREE(oci); - natsThread_Detach(t); - natsThread_Destroy(t); + if (t != NULL) { + natsThread_Detach(t); + natsThread_Destroy(t); + } natsSub_release(sub); } From f01cbae231f373db098211b294da0ee5ffba885b Mon Sep 17 00:00:00 2001 From: Burkov Egor Date: Tue, 18 Feb 2025 16:18:15 +0300 Subject: [PATCH 3/4] fix: some nulls checks - remove redundant braces --- src/conn.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/conn.c b/src/conn.c index 220b74ae7..e9938d17b 100644 --- a/src/conn.c +++ b/src/conn.c @@ -3352,9 +3352,8 @@ _processUrlString(natsOptions *opts, const char *urls) serverUrls = (char**) NATS_CALLOC(count + 1, sizeof(char*)); if (serverUrls == NULL) - { return NATS_NO_MEMORY; - } + if (s == NATS_OK) { urlsCopy = NATS_STRDUP(urls); From 6f9b421efecbcff5ff75ad90b201f99e7ac91bc6 Mon Sep 17 00:00:00 2001 From: Burkov Egor Date: Tue, 18 Feb 2025 16:20:21 +0300 Subject: [PATCH 4/4] fix: some nulls checks - better if for sub.c --- src/sub.c | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/src/sub.c b/src/sub.c index 1a19a5376..22d570c7b 100644 --- a/src/sub.c +++ b/src/sub.c @@ -656,12 +656,15 @@ natsSub_nextMsg(natsMsg **nextMsg, natsSubscription *sub, int64_t timeout, bool if (s == NATS_OK) { msg = sub->ownDispatcher.queue.head; - if ((msg == NULL) && sub->draining) + if (msg == NULL) { - removeSub = true; - s = NATS_TIMEOUT; + if (sub->draining) + { + removeSub = true; + s = NATS_TIMEOUT; + } } - else if (msg != NULL) + else { sub->ownDispatcher.queue.head = msg->next;