- Make dname_has_label's dnamelen check work with 0 length

This commit is contained in:
Ralph Dolmans 2020-01-29 11:30:22 +01:00
parent ef120738c0
commit 1d9185229e
2 changed files with 8 additions and 1 deletions

View File

@ -806,6 +806,7 @@ dname_test_has_label(void)
/* buffer too short */
unit_assert(dname_has_label((uint8_t*)"\02ab\01c\0", 5, (uint8_t*)"\0") == 0);
unit_assert(dname_has_label((uint8_t*)"\1a\0", 2, (uint8_t*)"\0") == 0);
unit_assert(dname_has_label((uint8_t*)"\0", 0, (uint8_t*)"\0") == 0);
unit_assert(dname_has_label((uint8_t*)"\02ab\01c", 4, (uint8_t*)"\01c") == 0);
unit_assert(dname_has_label((uint8_t*)"\02ab\03qwe\06oqieur\03def\01c\0", 19, (uint8_t*)"\01c") == 0);

View File

@ -561,7 +561,13 @@ dname_lab_startswith(uint8_t* label, char* prefix, char** endptr)
int
dname_has_label(uint8_t* dname, size_t dnamelen, uint8_t* label)
{
size_t len = *dname;
size_t len;
/* 1 byte needed for the label length */
if(dnamelen < 1)
return 0;
len = *dname;
while(len <= dnamelen) {
if(!(*dname)) {
if(*dname == *label)