summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/shared/dns-domain.c10
-rw-r--r--src/test/test-dns-domain.c3
2 files changed, 6 insertions, 7 deletions
diff --git a/src/shared/dns-domain.c b/src/shared/dns-domain.c
index ab61eb3b6e..ba6eff8f60 100644
--- a/src/shared/dns-domain.c
+++ b/src/shared/dns-domain.c
@@ -866,19 +866,17 @@ bool dns_name_is_single_label(const char *name) {
/* Encode a domain name according to RFC 1035 Section 3.1 */
int dns_name_to_wire_format(const char *domain, uint8_t *buffer, size_t len) {
- uint8_t *label_length;
- uint8_t *out;
+ uint8_t *label_length, *out;
int r;
- assert_return(buffer, -EINVAL);
- assert_return(domain, -EINVAL);
- assert_return(domain[0], -EINVAL);
+ assert(domain);
+ assert(buffer);
out = buffer;
do {
/* reserve a byte for label length */
- if (len == 0)
+ if (len <= 0)
return -ENOBUFS;
len--;
label_length = out;
diff --git a/src/test/test-dns-domain.c b/src/test/test-dns-domain.c
index 3e470c0ef2..0762faa9a7 100644
--- a/src/test/test-dns-domain.c
+++ b/src/test/test-dns-domain.c
@@ -66,11 +66,12 @@ static void test_dns_name_to_wire_format_one(const char *what, const char *expec
}
static void test_dns_name_to_wire_format(void) {
+ const char out0[] = { 0 };
const char out1[] = { 3, 'f', 'o', 'o', 0 };
const char out2[] = { 5, 'h', 'a', 'l', 'l', 'o', 3, 'f', 'o', 'o', 3, 'b', 'a', 'r', 0 };
const char out3[] = { 4, ' ', 'f', 'o', 'o', 3, 'b', 'a', 'r', 0 };
- test_dns_name_to_wire_format_one("", NULL, 0, -EINVAL);
+ test_dns_name_to_wire_format_one("", out0, sizeof(out0), sizeof(out0));
test_dns_name_to_wire_format_one("foo", out1, sizeof(out1), sizeof(out1));
test_dns_name_to_wire_format_one("foo", out1, sizeof(out1) + 1, sizeof(out1));