summaryrefslogtreecommitdiff
path: root/src/dnsproxy.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/dnsproxy.c')
-rw-r--r--src/dnsproxy.c21
1 files changed, 9 insertions, 12 deletions
diff --git a/src/dnsproxy.c b/src/dnsproxy.c
index 3f31bfb4..4524d216 100644
--- a/src/dnsproxy.c
+++ b/src/dnsproxy.c
@@ -1781,7 +1781,7 @@ static const char* uncompress(int16_t field_count, const char *start, const char
if (!convert_label(start, end, ptr, name, NS_MAXLABEL,
&pos, &comp_pos))
- goto out;
+ return NULL;
/*
* Copy the uncompressed resource record, type, class and \0 to
@@ -1790,7 +1790,7 @@ static const char* uncompress(int16_t field_count, const char *start, const char
ulen = strlen(name) + 1;
if ((uptr + ulen) > uncomp_end)
- goto out;
+ return NULL;
memcpy(uptr, name, ulen);
debug("pos %d ulen %d left %d name %s", pos, ulen,
@@ -1806,7 +1806,7 @@ static const char* uncompress(int16_t field_count, const char *start, const char
*/
if ((uptr + NS_RRFIXEDSZ) > uncomp_end) {
debug("uncompressed data too large for buffer");
- goto out;
+ return NULL;
}
memcpy(uptr, ptr, NS_RRFIXEDSZ);
@@ -1814,7 +1814,7 @@ static const char* uncompress(int16_t field_count, const char *start, const char
dns_class = uptr[2] << 8 | uptr[3];
if (dns_class != DNS_CLASS_IN)
- goto out;
+ return NULL;
ptr += NS_RRFIXEDSZ;
uptr += NS_RRFIXEDSZ;
@@ -1828,7 +1828,7 @@ static const char* uncompress(int16_t field_count, const char *start, const char
if (!convert_label(start, end, ptr, uptr,
uncomp_len - (uptr - uncompressed),
&pos, &comp_pos))
- goto out;
+ return NULL;
uptr[-2] = comp_pos << 8;
uptr[-1] = comp_pos & 0xff;
@@ -1841,7 +1841,7 @@ static const char* uncompress(int16_t field_count, const char *start, const char
if ((ptr + dlen) > end || (uptr + dlen) > uncomp_end) {
debug("data len %d too long", dlen);
- goto out;
+ return NULL;
}
memcpy(uptr, ptr, dlen);
@@ -1856,7 +1856,7 @@ static const char* uncompress(int16_t field_count, const char *start, const char
if (!convert_label(start, end, ptr, uptr,
uncomp_len - (uptr - uncompressed),
&pos, &comp_pos))
- goto out;
+ return NULL;
total_len += comp_pos;
len_ptr = &uptr[-2];
@@ -1867,7 +1867,7 @@ static const char* uncompress(int16_t field_count, const char *start, const char
if (!convert_label(start, end, ptr, uptr,
uncomp_len - (uptr - uncompressed),
&pos, &comp_pos))
- goto out;
+ return NULL;
total_len += comp_pos;
ptr += pos;
@@ -1880,7 +1880,7 @@ static const char* uncompress(int16_t field_count, const char *start, const char
*/
if ((uptr + 20) > uncomp_end || (ptr + 20) > end) {
debug("soa record too long");
- goto out;
+ return NULL;
}
memcpy(uptr, ptr, 20);
uptr += 20;
@@ -1898,9 +1898,6 @@ static const char* uncompress(int16_t field_count, const char *start, const char
}
return ptr;
-
-out:
- return NULL;
}
/*