BUG/MEDIUM: dns: overflowed dns name start position causing invalid dns error

In dns_read_name() when dns name is used with compression and start position of
name is greater than 255 name read is incorrect and causes invalid dns error.
eg: 0xc11b c specifies name compression being used. 11b represent the start
position of name but currently we are using only 1b for start position.

This should be backported as far as 1.7.
This commit is contained in:
Nikhil Agrawal 2018-12-20 10:50:59 +05:30 committed by Willy Tarreau
parent 8d4e7dc880
commit 2fa66c3b93

View File

@ -417,7 +417,7 @@ int dns_read_name(unsigned char *buffer, unsigned char *bufend,
if (depth++ > 100)
goto err;
n = dns_read_name(buffer, bufend, buffer + reader[1],
n = dns_read_name(buffer, bufend, buffer + (*reader & 0x3f)*256 + reader[1],
dest, dest_len - nb_bytes, offset, depth);
if (n == 0)
goto err;