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.
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)