Commit 9adcb8db authored by Jukka Rissanen's avatar Jukka Rissanen Committed by Anas Nashif
Browse files

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: default avatarJukka Rissanen <jukka.rissanen@nordicsemi.no>
parent 446d227b
Loading
Loading
Loading
Loading
+12 −5
Changes for subsys/net/lib/dns/resolve.c: 12 added lines, 5 removed lines.
Original line number Diff line number Diff line
@@ -696,7 +696,8 @@ int dns_validate_msg(struct dns_resolve_context *ctx,

	ret = dns_unpack_response_header(dns_msg, *dns_id);
	if (ret < 0) {
		ret = DNS_EAI_FAIL;
		errno = -ret;
		ret = DNS_EAI_SYSTEM;
		goto quit;
	}

@@ -711,7 +712,8 @@ int dns_validate_msg(struct dns_resolve_context *ctx,
	ret = dns_unpack_response_query(dns_msg);
	if (ret < 0) {
		if (ret == -ENOMEM) {
			ret = DNS_EAI_FAIL;
			errno = -ret;
			ret = DNS_EAI_SYSTEM;
			goto quit;
		}

@@ -742,7 +744,8 @@ int dns_validate_msg(struct dns_resolve_context *ctx,
		ret = dns_unpack_answer(dns_msg, answer_ptr, &ttl,
					&answer_type);
		if (ret < 0) {
			ret = DNS_EAI_FAIL;
			errno = -ret;
			ret = DNS_EAI_SYSTEM;
			goto quit;
		}

@@ -809,14 +812,16 @@ query_known:

			if (dns_msg->response_length < address_size) {
				/* it seems this is a malformed message */
				ret = DNS_EAI_FAIL;
				errno = EMSGSIZE;
				ret = DNS_EAI_SYSTEM;
				goto quit;
			}

			if ((dns_msg->response_position + address_size) >
			    dns_msg->msg_size) {
				/* Too short message */
				ret = DNS_EAI_FAIL;
				errno = EMSGSIZE;
				ret = DNS_EAI_SYSTEM;
				goto quit;
			}

@@ -862,6 +867,7 @@ query_known:

		*query_idx = get_slot_by_id(ctx, *dns_id, *query_hash);
		if (*query_idx < 0) {
			errno = ENOENT;
			ret = DNS_EAI_SYSTEM;
			goto quit;
		}
@@ -884,6 +890,7 @@ query_known:
						     net_buf_max_len(dns_cname),
						     dns_msg, pos);
				if (ret < 0) {
					errno = -ret;
					ret = DNS_EAI_SYSTEM;
					goto quit;
				}