|
|
|
@ -50,6 +50,13 @@ static uint8_t query_mdns[] = {
@@ -50,6 +50,13 @@ static uint8_t query_mdns[] = {
|
|
|
|
|
|
|
|
|
|
static uint16_t tid1 = 0xda0f; |
|
|
|
|
|
|
|
|
|
static uint8_t invalid_answer_resp_ipv4[18] = { |
|
|
|
|
/* DNS msg header (12 bytes) */ |
|
|
|
|
0x01, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, |
|
|
|
|
0x00, 0x00, 0x01, 0x00, 0x01, |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
static int eval_query(const char *dname, uint16_t tid, enum dns_rr_type type, |
|
|
|
|
uint8_t *expected, uint16_t expected_len) |
|
|
|
|
{ |
|
|
|
@ -1260,6 +1267,21 @@ static void test_dns_flags_len(void)
@@ -1260,6 +1267,21 @@ static void test_dns_flags_len(void)
|
|
|
|
|
"DNS message length check failed (%d)", ret); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
static void test_dns_invalid_answer(void) |
|
|
|
|
{ |
|
|
|
|
struct dns_msg_t dns_msg = { 0 }; |
|
|
|
|
enum dns_rr_type type; |
|
|
|
|
uint32_t ttl; |
|
|
|
|
int ret; |
|
|
|
|
|
|
|
|
|
dns_msg.msg = invalid_answer_resp_ipv4; |
|
|
|
|
dns_msg.msg_size = sizeof(invalid_answer_resp_ipv4); |
|
|
|
|
dns_msg.answer_offset = 12; |
|
|
|
|
|
|
|
|
|
ret = dns_unpack_answer(&dns_msg, 0, &ttl, &type); |
|
|
|
|
zassert_equal(ret, -EINVAL, "DNS message answer check succeed (%d)", ret); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void test_main(void) |
|
|
|
|
{ |
|
|
|
|
ztest_test_suite(dns_tests, |
|
|
|
@ -1271,7 +1293,8 @@ void test_main(void)
@@ -1271,7 +1293,8 @@ void test_main(void)
|
|
|
|
|
ztest_unit_test(test_dns_id_len), |
|
|
|
|
ztest_unit_test(test_dns_flags_len), |
|
|
|
|
ztest_unit_test(test_dns_malformed_responses), |
|
|
|
|
ztest_unit_test(test_dns_valid_responses) |
|
|
|
|
ztest_unit_test(test_dns_valid_responses), |
|
|
|
|
ztest_unit_test(test_dns_invalid_answer) |
|
|
|
|
); |
|
|
|
|
|
|
|
|
|
ztest_run_test_suite(dns_tests); |
|
|
|
|