]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
dns-domain: change dns_srv_type_is_valid() return value to bool
authorLennart Poettering <lennart@poettering.net>
Wed, 25 Nov 2015 20:15:07 +0000 (21:15 +0100)
committerLennart Poettering <lennart@poettering.net>
Wed, 25 Nov 2015 21:00:07 +0000 (22:00 +0100)
For similar reasons as dns_name_is_root() got changed in the previous
commit.

src/resolve/resolved-bus.c
src/shared/dns-domain.c
src/shared/dns-domain.h
src/test/test-dns-domain.c

index 8885b831010bb4b5ebb05c8440e6f8adc868dce0..1fd8e78f9244e56acc1c4fdaf5533abbddbddc0d 100644 (file)
@@ -1041,13 +1041,8 @@ static int bus_method_resolve_service(sd_bus_message *message, void *userdata, s
 
         if (isempty(type))
                 type = NULL;
-        else {
-                r = dns_srv_type_verify(type);
-                if (r < 0)
-                        return r;
-                if (r == 0)
-                        return sd_bus_error_setf(error, SD_BUS_ERROR_INVALID_ARGS, "Invalid SRV service type '%s'", type);
-        }
+        else if (!dns_srv_type_is_valid(type))
+                return sd_bus_error_setf(error, SD_BUS_ERROR_INVALID_ARGS, "Invalid SRV service type '%s'", type);
 
         r = dns_name_is_valid(domain);
         if (r < 0)
index 31b589143510e20b29802886fa1d31acd4fd1214..5a9b091ac41601f777ffc62037772f58f88626dc 100644 (file)
@@ -838,12 +838,12 @@ static bool srv_type_label_is_valid(const char *label, size_t n) {
         return true;
 }
 
-int dns_srv_type_verify(const char *name) {
+bool dns_srv_type_is_valid(const char *name) {
         unsigned c = 0;
         int r;
 
         if (!name)
-                return 0;
+                return false;
 
         for (;;) {
                 char label[DNS_LABEL_MAX];
@@ -851,18 +851,16 @@ int dns_srv_type_verify(const char *name) {
                 /* This more or less implements RFC 6335, Section 5.1 */
 
                 r = dns_label_unescape(&name, label, sizeof(label));
-                if (r == -EINVAL)
-                        return 0;
                 if (r < 0)
-                        return r;
+                        return false;
                 if (r == 0)
                         break;
 
                 if (c >= 2)
-                        return 0;
+                        return false;
 
                 if (!srv_type_label_is_valid(label, r))
-                        return 0;
+                        return false;
 
                 c++;
         }
@@ -901,7 +899,7 @@ int dns_service_join(const char *name, const char *type, const char *domain, cha
         assert(domain);
         assert(ret);
 
-        if (!dns_srv_type_verify(type))
+        if (!dns_srv_type_is_valid(type))
                 return -EINVAL;
 
         if (!name)
index 84be17425b3431f970d7ad9c761f1e992aeb5d2c..2f557d618e6e55413a04f0b9cd70a014202774b3 100644 (file)
@@ -72,8 +72,7 @@ bool dns_name_is_single_label(const char *name);
 
 int dns_name_to_wire_format(const char *domain, uint8_t *buffer, size_t len);
 
-int dns_srv_type_verify(const char *name);
-
+bool dns_srv_type_is_valid(const char *name);
 bool dns_service_name_is_valid(const char *name);
 
 int dns_service_join(const char *name, const char *type, const char *domain, char **ret);
index cefe8698c8c68840b6db0a423b3147e3693f18bf..df34b72ab67f85316231d9e6386ebd5c8a174535 100644 (file)
@@ -327,27 +327,27 @@ static void test_dns_service_name_is_valid(void) {
         assert_se(!dns_service_name_is_valid("this is an overly long string that is certainly longer than 63 characters"));
 }
 
-static void test_dns_srv_type_verify(void) {
-
-        assert_se(dns_srv_type_verify("_http._tcp") > 0);
-        assert_se(dns_srv_type_verify("_foo-bar._tcp") > 0);
-        assert_se(dns_srv_type_verify("_w._udp") > 0);
-        assert_se(dns_srv_type_verify("_a800._tcp") > 0);
-        assert_se(dns_srv_type_verify("_a-800._tcp") > 0);
-
-        assert_se(dns_srv_type_verify(NULL) == 0);
-        assert_se(dns_srv_type_verify("") == 0);
-        assert_se(dns_srv_type_verify("x") == 0);
-        assert_se(dns_srv_type_verify("_foo") == 0);
-        assert_se(dns_srv_type_verify("_tcp") == 0);
-        assert_se(dns_srv_type_verify("_") == 0);
-        assert_se(dns_srv_type_verify("_foo.") == 0);
-        assert_se(dns_srv_type_verify("_föo._tcp") == 0);
-        assert_se(dns_srv_type_verify("_f\no._tcp") == 0);
-        assert_se(dns_srv_type_verify("_800._tcp") == 0);
-        assert_se(dns_srv_type_verify("_-800._tcp") == 0);
-        assert_se(dns_srv_type_verify("_-foo._tcp") == 0);
-        assert_se(dns_srv_type_verify("_piep._foo._udp") == 0);
+static void test_dns_srv_type_is_valid(void) {
+
+        assert_se(dns_srv_type_is_valid("_http._tcp"));
+        assert_se(dns_srv_type_is_valid("_foo-bar._tcp"));
+        assert_se(dns_srv_type_is_valid("_w._udp"));
+        assert_se(dns_srv_type_is_valid("_a800._tcp"));
+        assert_se(dns_srv_type_is_valid("_a-800._tcp"));
+
+        assert_se(!dns_srv_type_is_valid(NULL));
+        assert_se(!dns_srv_type_is_valid(""));
+        assert_se(!dns_srv_type_is_valid("x"));
+        assert_se(!dns_srv_type_is_valid("_foo"));
+        assert_se(!dns_srv_type_is_valid("_tcp"));
+        assert_se(!dns_srv_type_is_valid("_"));
+        assert_se(!dns_srv_type_is_valid("_foo."));
+        assert_se(!dns_srv_type_is_valid("_föo._tcp"));
+        assert_se(!dns_srv_type_is_valid("_f\no._tcp"));
+        assert_se(!dns_srv_type_is_valid("_800._tcp"));
+        assert_se(!dns_srv_type_is_valid("_-800._tcp"));
+        assert_se(!dns_srv_type_is_valid("_-foo._tcp"));
+        assert_se(!dns_srv_type_is_valid("_piep._foo._udp"));
 }
 
 static void test_dns_service_join_one(const char *a, const char *b, const char *c, int r, const char *d) {
@@ -443,7 +443,7 @@ int main(int argc, char *argv[]) {
         test_dns_name_is_valid();
         test_dns_name_to_wire_format();
         test_dns_service_name_is_valid();
-        test_dns_srv_type_verify();
+        test_dns_srv_type_is_valid();
         test_dns_service_join();
         test_dns_service_split();
         test_dns_name_change_suffix();