]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
BUG/MINOR: resolvers: fix room for trailing zero in resolv_dn_label_to_str()
authorWilly Tarreau <w@1wt.eu>
Sat, 23 May 2026 16:53:27 +0000 (18:53 +0200)
committerWilly Tarreau <w@1wt.eu>
Mon, 25 May 2026 08:52:42 +0000 (10:52 +0200)
The previous fix 75f72c2eb ("BUG/MEDIUM: resolvers: Fix test on dn label
size in resolv_dn_label_to_str()") can still be fooled by an input exactly
the size of str_len, in which case the trailing zero appended at the end
was not being accounted for. Let's add 1 to the condition to prepare for
it.

This needs to be backported wherever the fix above is backported.

src/resolvers.c

index ee49fb8f923dd63980dce8d220b5803e4beca772..5308eaeb77e3718f5372c5010a1faa9626294bfe 100644 (file)
@@ -1857,8 +1857,8 @@ int resolv_dn_label_to_str(const char *dn, int dn_len, char *str, int str_len)
        for (i = 0; i < dn_len; ++i) {
                sz = (unsigned char)dn[i];
 
-               /* Check str_len adding 1 for the dot if (i!=0) */
-               if (str_len < sz+i+(!!i))
+               /* Check str_len adding 1 for the dot if (i!=0) and 1 for null terminator */
+               if (str_len < sz+i+(!!i)+1)
                        return -1;
 
                if (i)