Tidy up add_resource_record() buffer size checks.

Mainly code-size and readability fixes.

Also return NULL from do_rfc1035_name() when limit exceeded, so
that truncated bit gets set in answer.
This commit is contained in:
Simon Kelley
2017-10-13 23:26:29 +01:00
parent 22dee512f3
commit c366717e66
2 changed files with 28 additions and 36 deletions

View File

@@ -246,14 +246,16 @@ unsigned char *do_rfc1035_name(unsigned char *p, char *sval, char *limit)
while (sval && *sval)
{
if (limit && p + 1 > (unsigned char*)limit)
return p;
unsigned char *cp = p++;
if (limit && p > (unsigned char*)limit)
return NULL;
for (j = 0; *sval && (*sval != '.'); sval++, j++)
{
if (limit && p + 1 > (unsigned char*)limit)
return p;
return NULL;
#ifdef HAVE_DNSSEC
if (option_bool(OPT_DNSSEC_VALID) && *sval == NAME_ESCAPE)
*p++ = (*(++sval))-1;
@@ -261,10 +263,12 @@ unsigned char *do_rfc1035_name(unsigned char *p, char *sval, char *limit)
#endif
*p++ = *sval;
}
*cp = j;
if (*sval)
sval++;
}
return p;
}