Signed-off-by: Xin Shi <shixin21@huawei.com> (cherry picked from commit 15716d2841eaa73037827cb1b28a69db100c520e)
47 lines
1.4 KiB
Diff
47 lines
1.4 KiB
Diff
From 9c262fdb1c798fd87d91e8c669acbec4d632024b Mon Sep 17 00:00:00 2001
|
|
From: Dmitry Antipov <dmantipov@yandex.ru>
|
|
Date: Fri, 19 May 2023 10:41:08 +0300
|
|
Subject: [PATCH] shared: avoid passing {NULL, 0} array to bsearch()
|
|
|
|
Fix the following warning reported by UBSan (as of gcc-13.1.1):
|
|
|
|
shared/hash.c:244:35: runtime error: null pointer passed as
|
|
argument 2, which is declared to never be null
|
|
|
|
Reviewed-by: Christophe Leroy <christophe.leroy@csgroup.eu>
|
|
Signed-off-by: Dmitry Antipov <dmantipov@yandex.ru>
|
|
[ reshuffle the code to use return-early style ]
|
|
Signed-off-by: Lucas De Marchi <lucas.de.marchi@gmail.com>
|
|
---
|
|
shared/hash.c | 13 ++++++++-----
|
|
1 file changed, 8 insertions(+), 5 deletions(-)
|
|
|
|
diff --git a/shared/hash.c b/shared/hash.c
|
|
index 7fe3f80..a87bc50 100644
|
|
--- a/shared/hash.c
|
|
+++ b/shared/hash.c
|
|
@@ -241,12 +241,15 @@ void *hash_find(const struct hash *hash, const char *key)
|
|
.key = key,
|
|
.value = NULL
|
|
};
|
|
- const struct hash_entry *entry = bsearch(
|
|
- &se, bucket->entries, bucket->used,
|
|
- sizeof(struct hash_entry), hash_entry_cmp);
|
|
- if (entry == NULL)
|
|
+ const struct hash_entry *entry;
|
|
+
|
|
+ if (!bucket->entries)
|
|
return NULL;
|
|
- return (void *)entry->value;
|
|
+
|
|
+ entry = bsearch(&se, bucket->entries, bucket->used,
|
|
+ sizeof(struct hash_entry), hash_entry_cmp);
|
|
+
|
|
+ return entry ? (void *)entry->value : NULL;
|
|
}
|
|
|
|
int hash_del(struct hash *hash, const char *key)
|
|
--
|
|
2.27.0
|
|
|