Skip to content

Commit 756f576

Browse files
committed
net: dns: Use DNS_EAI_SYSTEM error properly
The DNS_EAI_SYSTEM error value tells that the errno value contains the actual system error value. So set the errno properly when there is a system error. Signed-off-by: Jukka Rissanen <[email protected]>
1 parent 7dcd584 commit 756f576

File tree

1 file changed

+12
-5
lines changed

1 file changed

+12
-5
lines changed

subsys/net/lib/dns/resolve.c

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -696,7 +696,8 @@ int dns_validate_msg(struct dns_resolve_context *ctx,
696696

697697
ret = dns_unpack_response_header(dns_msg, *dns_id);
698698
if (ret < 0) {
699-
ret = DNS_EAI_FAIL;
699+
errno = -ret;
700+
ret = DNS_EAI_SYSTEM;
700701
goto quit;
701702
}
702703

@@ -711,7 +712,8 @@ int dns_validate_msg(struct dns_resolve_context *ctx,
711712
ret = dns_unpack_response_query(dns_msg);
712713
if (ret < 0) {
713714
if (ret == -ENOMEM) {
714-
ret = DNS_EAI_FAIL;
715+
errno = -ret;
716+
ret = DNS_EAI_SYSTEM;
715717
goto quit;
716718
}
717719

@@ -742,7 +744,8 @@ int dns_validate_msg(struct dns_resolve_context *ctx,
742744
ret = dns_unpack_answer(dns_msg, answer_ptr, &ttl,
743745
&answer_type);
744746
if (ret < 0) {
745-
ret = DNS_EAI_FAIL;
747+
errno = -ret;
748+
ret = DNS_EAI_SYSTEM;
746749
goto quit;
747750
}
748751

@@ -809,14 +812,16 @@ int dns_validate_msg(struct dns_resolve_context *ctx,
809812

810813
if (dns_msg->response_length < address_size) {
811814
/* it seems this is a malformed message */
812-
ret = DNS_EAI_FAIL;
815+
errno = EMSGSIZE;
816+
ret = DNS_EAI_SYSTEM;
813817
goto quit;
814818
}
815819

816820
if ((dns_msg->response_position + address_size) >
817821
dns_msg->msg_size) {
818822
/* Too short message */
819-
ret = DNS_EAI_FAIL;
823+
errno = EMSGSIZE;
824+
ret = DNS_EAI_SYSTEM;
820825
goto quit;
821826
}
822827

@@ -862,6 +867,7 @@ int dns_validate_msg(struct dns_resolve_context *ctx,
862867

863868
*query_idx = get_slot_by_id(ctx, *dns_id, *query_hash);
864869
if (*query_idx < 0) {
870+
errno = ENOENT;
865871
ret = DNS_EAI_SYSTEM;
866872
goto quit;
867873
}
@@ -884,6 +890,7 @@ int dns_validate_msg(struct dns_resolve_context *ctx,
884890
net_buf_max_len(dns_cname),
885891
dns_msg, pos);
886892
if (ret < 0) {
893+
errno = -ret;
887894
ret = DNS_EAI_SYSTEM;
888895
goto quit;
889896
}

0 commit comments

Comments
 (0)