From 1d9185229ec11592b54b4afcc0aa16197b0ab857 Mon Sep 17 00:00:00 2001 From: Ralph Dolmans Date: Wed, 29 Jan 2020 11:30:22 +0100 Subject: [PATCH] - Make dname_has_label's dnamelen check work with 0 length --- testcode/unitdname.c | 1 + util/data/dname.c | 8 +++++++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/testcode/unitdname.c b/testcode/unitdname.c index b0c3fb057..6769127b9 100644 --- a/testcode/unitdname.c +++ b/testcode/unitdname.c @@ -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); diff --git a/util/data/dname.c b/util/data/dname.c index 239a56ac1..c8f09ddbc 100644 --- a/util/data/dname.c +++ b/util/data/dname.c @@ -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)