37 lines
1.3 KiB
Diff
37 lines
1.3 KiB
Diff
|
|
From 49c165c5a8a40c0ef6a9cee00a81adac2da71533 Mon Sep 17 00:00:00 2001
|
||
|
|
From: Ben Wagner <bungeman@chromium.org>
|
||
|
|
Date: Tue, 7 Apr 2020 13:12:18 -0400
|
||
|
|
Subject: [PATCH 67/68] Don't add to NULL in iterator.
|
||
|
|
|
||
|
|
In C it is undefined to add anything to NULL. Clang recently began
|
||
|
|
taking advantage of this and can assume that if anything is added or
|
||
|
|
subtracted from a pointer that the pointer can be assumed non-NULL. The
|
||
|
|
Address Sanitizer has been updated to report when this happens at
|
||
|
|
runtime and produces messages like
|
||
|
|
|
||
|
|
expat/lib/xmlparse.c:6509:23: runtime error: applying zero offset to null pointer
|
||
|
|
SUMMARY: UndefinedBehaviorSanitizer: undefined-behavior expat/lib/xmlparse.c:6509:23
|
||
|
|
|
||
|
|
This can be mitigated with 'p ? p + n : NULL' which optimizes to just
|
||
|
|
the add in all optimizing compilers, but avoids the undefined behavior.
|
||
|
|
---
|
||
|
|
lib/xmlparse.c | 2 +-
|
||
|
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
||
|
|
|
||
|
|
diff --git a/lib/xmlparse.c b/lib/xmlparse.c
|
||
|
|
index 638ea52..849411c 100644
|
||
|
|
--- a/lib/xmlparse.c
|
||
|
|
+++ b/lib/xmlparse.c
|
||
|
|
@@ -6506,7 +6506,7 @@ hashTableInit(HASH_TABLE *p, const XML_Memory_Handling_Suite *ms) {
|
||
|
|
static void FASTCALL
|
||
|
|
hashTableIterInit(HASH_TABLE_ITER *iter, const HASH_TABLE *table) {
|
||
|
|
iter->p = table->v;
|
||
|
|
- iter->end = iter->p + table->size;
|
||
|
|
+ iter->end = iter->p ? iter->p + table->size : NULL;
|
||
|
|
}
|
||
|
|
|
||
|
|
static NAMED *FASTCALL
|
||
|
|
--
|
||
|
|
1.8.3.1
|
||
|
|
|