dns-domain: change dns_srv_type_is_valid() return value to bool
For similar reasons as dns_name_is_root() got changed in the previous commit.
This commit is contained in:
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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);
|
||||
|
||||
+20
-20
@@ -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) {
|
||||
static void test_dns_srv_type_is_valid(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_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_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);
|
||||
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();
|
||||
|
||||
Reference in New Issue
Block a user