[PATCH master 2/4] lib: wchar: guard against NULL in strdup_wchar

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



strdup(NULL) returns NULL, so the wchar_t-Variants should behave
the same way.

Signed-off-by: Ahmad Fatoum <a.fatoum@xxxxxxxxxxxxxx>
---
 lib/wchar.c | 12 +++++++++---
 1 file changed, 9 insertions(+), 3 deletions(-)

diff --git a/lib/wchar.c b/lib/wchar.c
index 250538dd8511..49e946a09424 100644
--- a/lib/wchar.c
+++ b/lib/wchar.c
@@ -39,9 +39,13 @@ size_t wcsnlen(const wchar_t * s, size_t count)
 
 wchar_t *strdup_wchar(const wchar_t *src)
 {
-	int len = wcslen(src);
+	int len;
 	wchar_t *tmp, *dst;
 
+	if (!src)
+		return NULL;
+
+	len = wcslen(src);
 	if (!(dst = malloc((len + 1) * sizeof(wchar_t))))
 		return NULL;
 
@@ -97,8 +101,9 @@ wchar_t *strcpy_char_to_wchar(wchar_t *dst, const char *src)
 
 wchar_t *strdup_char_to_wchar(const char *src)
 {
-	wchar_t *dst = malloc((strlen(src) + 1) * sizeof(wchar_t));
+	wchar_t *dst;
 
+	dst = src ? malloc((strlen(src) + 1) * sizeof(wchar_t)) : NULL;
 	if (!dst)
 		return NULL;
 
@@ -109,8 +114,9 @@ wchar_t *strdup_char_to_wchar(const char *src)
 
 char *strdup_wchar_to_char(const wchar_t *src)
 {
-	char *dst = malloc((wcslen(src) + 1));
+	char *dst;
 
+	dst = src ? malloc((wcslen(src) + 1)) : NULL;
 	if (!dst)
 		return NULL;
 
-- 
2.39.2





[Index of Archives]     [Linux Embedded]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [XFree86]

  Powered by Linux