aboutsummaryrefslogtreecommitdiffstats
path: root/contrib/libs/c-ares/ares_parse_soa_reply.c
diff options
context:
space:
mode:
authorshadchin <shadchin@yandex-team.ru>2022-02-10 16:44:30 +0300
committerDaniil Cherednik <dcherednik@yandex-team.ru>2022-02-10 16:44:30 +0300
commit2598ef1d0aee359b4b6d5fdd1758916d5907d04f (patch)
tree012bb94d777798f1f56ac1cec429509766d05181 /contrib/libs/c-ares/ares_parse_soa_reply.c
parent6751af0b0c1b952fede40b19b71da8025b5d8bcf (diff)
downloadydb-2598ef1d0aee359b4b6d5fdd1758916d5907d04f.tar.gz
Restoring authorship annotation for <shadchin@yandex-team.ru>. Commit 1 of 2.
Diffstat (limited to 'contrib/libs/c-ares/ares_parse_soa_reply.c')
-rw-r--r--contrib/libs/c-ares/ares_parse_soa_reply.c200
1 files changed, 100 insertions, 100 deletions
diff --git a/contrib/libs/c-ares/ares_parse_soa_reply.c b/contrib/libs/c-ares/ares_parse_soa_reply.c
index 8b84a368db..473b3542a8 100644
--- a/contrib/libs/c-ares/ares_parse_soa_reply.c
+++ b/contrib/libs/c-ares/ares_parse_soa_reply.c
@@ -48,8 +48,8 @@ ares_parse_soa_reply(const unsigned char *abuf, int alen,
long len;
char *qname = NULL, *rr_name = NULL;
struct ares_soa_reply *soa = NULL;
- int qdcount, ancount, qclass;
- int status, i, rr_type, rr_class, rr_len;
+ int qdcount, ancount, qclass;
+ int status, i, rr_type, rr_class, rr_len;
int ttl;
if (alen < HFIXEDSZ)
@@ -58,12 +58,12 @@ ares_parse_soa_reply(const unsigned char *abuf, int alen,
/* parse message header */
qdcount = DNS_HEADER_QDCOUNT(abuf);
ancount = DNS_HEADER_ANCOUNT(abuf);
-
- if (qdcount != 1)
- return ARES_EBADRESP;
- if (ancount == 0)
+
+ if (qdcount != 1)
return ARES_EBADRESP;
-
+ if (ancount == 0)
+ return ARES_EBADRESP;
+
aptr = abuf + HFIXEDSZ;
/* query name */
@@ -72,113 +72,113 @@ ares_parse_soa_reply(const unsigned char *abuf, int alen,
goto failed_stat;
aptr += len;
- qclass = DNS_QUESTION_TYPE(aptr);
-
+ qclass = DNS_QUESTION_TYPE(aptr);
+
/* skip qtype & qclass */
if (aptr + QFIXEDSZ > abuf + alen)
goto failed;
aptr += QFIXEDSZ;
- /* qclass of SOA with multiple answers */
- if (qclass == T_SOA && ancount > 1)
+ /* qclass of SOA with multiple answers */
+ if (qclass == T_SOA && ancount > 1)
goto failed;
- /* examine all the records, break and return if found soa */
- for (i = 0; i < ancount; i++)
- {
- rr_name = NULL;
- status = ares__expand_name_for_response (aptr, abuf, alen, &rr_name, &len);
- if (status != ARES_SUCCESS)
- {
- ares_free(rr_name);
- goto failed_stat;
- }
-
- aptr += len;
- if ( aptr + RRFIXEDSZ > abuf + alen )
+ /* examine all the records, break and return if found soa */
+ for (i = 0; i < ancount; i++)
+ {
+ rr_name = NULL;
+ status = ares__expand_name_for_response (aptr, abuf, alen, &rr_name, &len);
+ if (status != ARES_SUCCESS)
+ {
+ ares_free(rr_name);
+ goto failed_stat;
+ }
+
+ aptr += len;
+ if ( aptr + RRFIXEDSZ > abuf + alen )
{
- ares_free(rr_name);
- status = ARES_EBADRESP;
+ ares_free(rr_name);
+ status = ARES_EBADRESP;
goto failed_stat;
}
- rr_type = DNS_RR_TYPE( aptr );
- rr_class = DNS_RR_CLASS( aptr );
- rr_len = DNS_RR_LEN( aptr );
- ttl = DNS_RR_TTL(aptr);
- aptr += RRFIXEDSZ;
- if (aptr + rr_len > abuf + alen)
- {
- ares_free(rr_name);
- status = ARES_EBADRESP;
- goto failed_stat;
- }
- if ( rr_class == C_IN && rr_type == T_SOA )
- {
- /* allocate result struct */
- soa = ares_malloc_data(ARES_DATATYPE_SOA_REPLY);
- if (!soa)
- {
- ares_free(rr_name);
- status = ARES_ENOMEM;
- goto failed_stat;
- }
-
- /* nsname */
- status = ares__expand_name_for_response(aptr, abuf, alen, &soa->nsname,
- &len);
- if (status != ARES_SUCCESS)
- {
- ares_free(rr_name);
- goto failed_stat;
- }
- aptr += len;
-
- /* hostmaster */
- status = ares__expand_name_for_response(aptr, abuf, alen,
- &soa->hostmaster, &len);
- if (status != ARES_SUCCESS)
- {
- ares_free(rr_name);
- goto failed_stat;
- }
- aptr += len;
-
- /* integer fields */
- if (aptr + 5 * 4 > abuf + alen)
- {
- ares_free(rr_name);
- goto failed;
- }
- soa->serial = DNS__32BIT(aptr + 0 * 4);
- soa->refresh = DNS__32BIT(aptr + 1 * 4);
- soa->retry = DNS__32BIT(aptr + 2 * 4);
- soa->expire = DNS__32BIT(aptr + 3 * 4);
- soa->minttl = DNS__32BIT(aptr + 4 * 4);
- soa->ttl = ttl;
-
- ares_free(qname);
- ares_free(rr_name);
-
- *soa_out = soa;
-
- return ARES_SUCCESS;
- }
- aptr += rr_len;
-
- ares_free(rr_name);
-
- if (aptr > abuf + alen)
- goto failed_stat;
- }
- /* no SOA record found */
- status = ARES_EBADRESP;
- goto failed_stat;
+ rr_type = DNS_RR_TYPE( aptr );
+ rr_class = DNS_RR_CLASS( aptr );
+ rr_len = DNS_RR_LEN( aptr );
+ ttl = DNS_RR_TTL(aptr);
+ aptr += RRFIXEDSZ;
+ if (aptr + rr_len > abuf + alen)
+ {
+ ares_free(rr_name);
+ status = ARES_EBADRESP;
+ goto failed_stat;
+ }
+ if ( rr_class == C_IN && rr_type == T_SOA )
+ {
+ /* allocate result struct */
+ soa = ares_malloc_data(ARES_DATATYPE_SOA_REPLY);
+ if (!soa)
+ {
+ ares_free(rr_name);
+ status = ARES_ENOMEM;
+ goto failed_stat;
+ }
+
+ /* nsname */
+ status = ares__expand_name_for_response(aptr, abuf, alen, &soa->nsname,
+ &len);
+ if (status != ARES_SUCCESS)
+ {
+ ares_free(rr_name);
+ goto failed_stat;
+ }
+ aptr += len;
+
+ /* hostmaster */
+ status = ares__expand_name_for_response(aptr, abuf, alen,
+ &soa->hostmaster, &len);
+ if (status != ARES_SUCCESS)
+ {
+ ares_free(rr_name);
+ goto failed_stat;
+ }
+ aptr += len;
+
+ /* integer fields */
+ if (aptr + 5 * 4 > abuf + alen)
+ {
+ ares_free(rr_name);
+ goto failed;
+ }
+ soa->serial = DNS__32BIT(aptr + 0 * 4);
+ soa->refresh = DNS__32BIT(aptr + 1 * 4);
+ soa->retry = DNS__32BIT(aptr + 2 * 4);
+ soa->expire = DNS__32BIT(aptr + 3 * 4);
+ soa->minttl = DNS__32BIT(aptr + 4 * 4);
+ soa->ttl = ttl;
+
+ ares_free(qname);
+ ares_free(rr_name);
+
+ *soa_out = soa;
+
+ return ARES_SUCCESS;
+ }
+ aptr += rr_len;
+
+ ares_free(rr_name);
+
+ if (aptr > abuf + alen)
+ goto failed_stat;
+ }
+ /* no SOA record found */
+ status = ARES_EBADRESP;
+ goto failed_stat;
failed:
status = ARES_EBADRESP;
failed_stat:
- if (soa)
- ares_free_data(soa);
+ if (soa)
+ ares_free_data(soa);
if (qname)
ares_free(qname);
return status;