From b0eb340d47fa94daa08fa26b4095d5a25a735e3c Mon Sep 17 00:00:00 2001 From: Andrianov Roman Date: Mon, 24 Jul 2023 11:39:58 +0200 Subject: [PATCH] Fix MISRA rule 22-1. (#1765) * Fix MISRA rule 22-1. * update CI config with MISRA rule 22-1. --------- Co-authored-by: eboasson --- .github/codeql/resolved-misra-rules.yml | 2 ++ src/ddsrt/src/sockets.c | 1 + src/ddsrt/src/threads/posix/threads.c | 1 + 3 files changed, 4 insertions(+) diff --git a/.github/codeql/resolved-misra-rules.yml b/.github/codeql/resolved-misra-rules.yml index 12d4705bdb..197f2b2a18 100644 --- a/.github/codeql/resolved-misra-rules.yml +++ b/.github/codeql/resolved-misra-rules.yml @@ -12,4 +12,6 @@ queries: - uses: ./codeql-coding-standards/c/misra/src/rules/RULE-22-8/ErrnoSetToZeroPriorToCall.ql - uses: ./codeql-coding-standards/c/misra/src/rules/RULE-8-3/DeclarationsOfAFunctionSameNameAndType.ql #[1/2] # - uses: ./codeql-coding-standards/c/misra/src/rules/RULE-8-3/DeclarationsOfAnObjectSameNameAndType.ql #[2/2] + - uses: ./codeql-coding-standards/c/misra/src/rules/RULE-22-1/CloseFileHandleWhenNoLongerNeededMisra.ql + - uses: ./codeql-coding-standards/c/misra/src/rules/RULE-22-1/FreeMemoryWhenNoLongerNeededMisra.ql # - uses: ./codeql-coding-standards/c/misra/src/rules/RULE-11-1/ConversionBetweenFunctionPointerAndOtherType.ql diff --git a/src/ddsrt/src/sockets.c b/src/ddsrt/src/sockets.c index e1ba94196b..1d8526e155 100644 --- a/src/ddsrt/src/sockets.c +++ b/src/ddsrt/src/sockets.c @@ -392,6 +392,7 @@ ddsrt_gethostbyname(const char *name, int af, ddsrt_hostent_t **hentp) memcpy(&hent->addrs[addrno], res->ai_addr, res->ai_addrlen); } } else { + freeaddrinfo(res); return DDS_RETCODE_OUT_OF_RESOURCES; } diff --git a/src/ddsrt/src/threads/posix/threads.c b/src/ddsrt/src/threads/posix/threads.c index 101ff5fd78..2591a1e952 100644 --- a/src/ddsrt/src/threads/posix/threads.c +++ b/src/ddsrt/src/threads/posix/threads.c @@ -635,6 +635,7 @@ dds_return_t ddsrt_thread_cleanup_push (void (*routine) (void * p), void *arg) tail->arg = arg; if ((err = pthread_setspecific(thread_cleanup_key, tail)) != 0) { assert(err != EINVAL); + ddsrt_free(tail); return DDS_RETCODE_OUT_OF_RESOURCES; } return DDS_RETCODE_OK;