Fix string_copyn() for limit greater than actual string length
[exim.git] / src / src / functions.h
index f8e0cd77e3be5c3f0e087832b4d32a47dc8b6e09..07df8755b33f6f81da05a8c4a94bcc6a17d93294 100644 (file)
@@ -788,7 +788,10 @@ static inline uschar *
 string_copyn_taint_trc(const uschar * s, unsigned len,
        const void * proto_mem, const char * func, int line)
 {
-uschar * ss = store_get_3(len + 1, proto_mem, func, line);
+uschar * ss;
+unsigned slen = Ustrlen(s);
+if (len > slen) len = slen;
+ss = store_get_3(len + 1, proto_mem, func, line);
 memcpy(ss, s, len);
 ss[len] = '\0';
 return ss;