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

Bug#560037: [PATCH] fix early return in clock_to_utf8()



clock_to_utf8() has an early return that simply strdup()'s the input
string without respecting in_len. This replaces that call with an
expanded strndup() (strndup itself is a non-portable GNU extension)
---
:100644 100644 cbb0e42... 84bda3d... M	xclock/Clock.c
 xclock/Clock.c |    9 +++++++--
 1 files changed, 7 insertions(+), 2 deletions(-)

diff --git a/xclock/Clock.c b/xclock/Clock.c
index cbb0e42..84bda3d 100644
--- a/xclock/Clock.c
+++ b/xclock/Clock.c
@@ -2232,8 +2232,13 @@ clock_to_utf8(const char *str, int in_len)
     if (str == NULL ||code_set == NULL || strcasecmp(code_set, "646") == 0)
     	return NULL;
 
-    if (strcasecmp(code_set, "UTF-8") == 0)
-    	return strdup(str);
+    if (strcasecmp(code_set, "UTF-8") == 0) {
+    	if ((buf = malloc(in_len + 1)) == NULL)
+    		return NULL;
+    	buf[in_len] = '\0';
+    	memcpy(buf, str, in_len);
+    	return buf;
+    }
 
     cd = iconv_open("UTF-8", code_set);
     if (cd == (iconv_t)-1)
-- 
1.7.1




Reply to: