Blame SOURCES/0077-util.h-make-strdupa-and-strndupa-pass-NULL-straight-.patch

b15ea1
From 07fbba7acf9c757a3ae8192a64cb3a1f631c5f74 Mon Sep 17 00:00:00 2001
b15ea1
From: Peter Jones <pjones@redhat.com>
b15ea1
Date: Thu, 30 Jan 2020 13:57:18 -0500
b15ea1
Subject: [PATCH 77/86] util.h: make strdupa() and strndupa() pass NULL
b15ea1
 straight through.
b15ea1
b15ea1
Signed-off-by: Peter Jones <pjones@redhat.com>
b15ea1
---
b15ea1
 src/util.h | 22 +++++++++++++++-------
b15ea1
 1 file changed, 15 insertions(+), 7 deletions(-)
b15ea1
b15ea1
diff --git a/src/util.h b/src/util.h
b15ea1
index b7b03931d7e..f4c6c27cc73 100644
b15ea1
--- a/src/util.h
b15ea1
+++ b/src/util.h
b15ea1
@@ -147,9 +147,13 @@ lcm(uint64_t x, uint64_t y)
b15ea1
 #define strdupa(s)						\
b15ea1
        (__extension__ ({					\
b15ea1
 		const char *__in = (s);				\
b15ea1
-		size_t __len = strlen (__in);			\
b15ea1
-		char *__out = (char *) alloca (__len + 1);	\
b15ea1
-		strcpy(__out, __in);				\
b15ea1
+		size_t __len;					\
b15ea1
+		char *__out = NULL;				\
b15ea1
+		if (__in) {					\
b15ea1
+			__len = strlen (__in);			\
b15ea1
+			__out = (char *) alloca (__len + 1);	\
b15ea1
+			strcpy(__out, __in);			\
b15ea1
+		}						\
b15ea1
 		__out;						\
b15ea1
 	}))
b15ea1
 #endif
b15ea1
@@ -158,10 +162,14 @@ lcm(uint64_t x, uint64_t y)
b15ea1
 #define strndupa(s, l)						\
b15ea1
        (__extension__ ({					\
b15ea1
 		const char *__in = (s);				\
b15ea1
-		size_t __len = strnlen (__in, (l));		\
b15ea1
-		char *__out = (char *) alloca (__len + 1);	\
b15ea1
-		strncpy(__out, __in, __len);			\
b15ea1
-		__out[__len] = '\0';				\
b15ea1
+		size_t __len;					\
b15ea1
+		char *__out = NULL;				\
b15ea1
+		if (__in) {					\
b15ea1
+			__len = strnlen (__in, (l));		\
b15ea1
+			__out = (char *) alloca (__len + 1);	\
b15ea1
+			strncpy(__out, __in, __len);		\
b15ea1
+			__out[__len] = '\0';			\
b15ea1
+		}						\
b15ea1
 		__out;						\
b15ea1
 	}))
b15ea1
 #endif
b15ea1
-- 
b15ea1
2.24.1
b15ea1