]> www.infradead.org Git - users/sagi/libnvme.git/commitdiff
test: don't pass NULL to memcmp() or memset()
authorCaleb Sander <csander@purestorage.com>
Sat, 14 Oct 2023 01:28:09 +0000 (19:28 -0600)
committerDaniel Wagner <wagi@monom.org>
Thu, 2 Nov 2023 13:31:26 +0000 (14:31 +0100)
According to the C standard, it is undefined behavior
to pass NULL pointers to standard library functions.
This includes the mem*() family of functions,
even they are passed a length of 0.
So avoid calling these functions when the length is 0.

Signed-off-by: Caleb Sander <csander@purestorage.com>
test/ioctl/mock.c
test/mi.c

index 5d2ac94e0840a3a8a66798db9296afdae6347139..a97a357eabc341a261864b9ced39189f2aa6d9bf 100644 (file)
@@ -75,10 +75,12 @@ void end_mock_cmds(void)
        check((cmd)->metadata_len == (mock_cmd)->metadata_len, \
              "got metadata_len %" PRIu32 ", expected %" PRIu32, \
              (cmd)->metadata_len, (mock_cmd)->metadata_len); \
-       cmp((void const *)(uintptr_t)(cmd)->metadata, \
-           (mock_cmd)->metadata, \
-           (cmd)->metadata_len, \
-           "incorrect metadata"); \
+       if ((cmd)->metadata_len) { \
+               cmp((void const *)(uintptr_t)(cmd)->metadata, \
+                   (mock_cmd)->metadata, \
+                   (cmd)->metadata_len, \
+                   "incorrect metadata"); \
+       } \
        __u32 data_len = (cmd)->data_len; \
        check(data_len == (mock_cmd)->data_len, \
              "got data_len %" PRIu32 ", expected %" PRIu32, \
index 1f95db0dadf7ccb02bf01dfccf44ae1f921460b0..91b827a1e49a9add572cf4249d27a427db8746d8 100644 (file)
--- a/test/mi.c
+++ b/test/mi.c
@@ -44,7 +44,8 @@ static int test_transport_submit(struct nvme_mi_ep *ep,
 
        /* start from a minimal response: zeroed data, nmp to match request */
        memset(resp->hdr, 0, resp->hdr_len);
-       memset(resp->data, 0, resp->data_len);
+       if (resp->data_len)
+               memset(resp->data, 0, resp->data_len);
        resp->hdr->type = NVME_MI_MSGTYPE_NVME;
        resp->hdr->nmp = req->hdr->nmp | (NVME_MI_ROR_RSP << 7);