uci: silence UBSAN error by using offsetof macro from compiler
authorPetr Štetiar <ynezz@true.cz>
Fri, 2 Oct 2020 12:52:19 +0000 (14:52 +0200)
committerPetr Štetiar <ynezz@true.cz>
Sat, 3 Oct 2020 07:46:18 +0000 (09:46 +0200)
Fixes following ubdefined-behavior as reported by clang version 10.0.0-4ubuntu1~18.04.2:

 delta.c:139:52: runtime error: member access within null pointer of type 'struct uci_element'
 SUMMARY: UndefinedBehaviorSanitizer: undefined-behavior delta.c:139:52

Signed-off-by: Petr Štetiar <ynezz@true.cz>
uci.h

diff --git a/uci.h b/uci.h
index 43f2052a00e6901e67cd6d1956fdb36375b41358..b385e2be964fc4a891833ede584fba6c8fa208cb 100644 (file)
--- a/uci.h
+++ b/uci.h
@@ -34,6 +34,7 @@ extern "C" {
 #include <setjmp.h>
 #include <stdio.h>
 #include <stdint.h>
+#include <stddef.h>
 
 #define UCI_CONFDIR "/etc/config"
 #define UCI_SAVEDIR "/tmp/.uci"
@@ -509,11 +510,6 @@ struct uci_parse_option {
 };
 
 
-/* linked list handling */
-#ifndef offsetof
-#define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER)
-#endif
-
 /**
  * container_of - cast a member of a structure out to the containing structure
  * @ptr:    the pointer to the member.