]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
sd-bus: make name validation functions public
authorZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Sun, 24 May 2020 10:51:51 +0000 (12:51 +0200)
committerZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Mon, 25 May 2020 09:09:21 +0000 (11:09 +0200)
Those are fairly trivial to reimplement, but any non-trivial user of sd-bus
is likely to need them. So let's expose them to save everyone the trouble.

I'm keeping the internal functions and making the public ones thin wrappers,
because for the internal uses we don't need the additional asserts, and also we
can't expose _pure_ annotation easily, and dropping it would likely make the
compiled code a bit less efficient.

src/libsystemd/libsystemd.sym
src/libsystemd/sd-bus/bus-internal.h
src/libsystemd/sd-bus/bus-type.c
src/systemd/sd-bus.h

index 1cfe355089671dfc9c97f9eb77e6483653478925..cc396780ce8bc79f3b45a16345c436ea97d0cd22 100644 (file)
@@ -700,6 +700,11 @@ global:
 
 LIBSYSTEMD_246 {
 global:
+        sd_bus_interface_name_is_valid;
+        sd_bus_service_name_is_valid;
+        sd_bus_member_name_is_valid;
+        sd_bus_object_path_is_valid;
+
         sd_bus_call_methodv;
         sd_bus_call_method_asyncv;
         sd_bus_emit_signalv;
@@ -707,6 +712,7 @@ global:
         sd_bus_reply_method_errorfv;
         sd_bus_reply_method_returnv;
         sd_bus_set_propertyv;
+
         sd_path_lookup;
         sd_path_lookup_strv;
 } LIBSYSTEMD_245;
index 352a419e25d76516d762e7a98d6e97acf1239af3..7e13f4f73ba965066089852a04fcad405d0a0bff 100644 (file)
@@ -354,6 +354,7 @@ bool interface_name_is_valid(const char *p) _pure_;
 bool service_name_is_valid(const char *p) _pure_;
 bool member_name_is_valid(const char *p) _pure_;
 bool object_path_is_valid(const char *p) _pure_;
+
 char *object_path_startswith(const char *a, const char *b) _pure_;
 
 bool namespace_complex_pattern(const char *pattern, const char *value) _pure_;
index 18564a53834a1d71ade295c0ef901dabc3d65cfb..585f8424b3f85c9ae4cfcdb785284b7bf25b6029 100644 (file)
@@ -4,6 +4,7 @@
 
 #include "sd-bus.h"
 
+#include "bus-internal.h"
 #include "bus-type.h"
 
 bool bus_type_is_valid(char c) {
@@ -135,3 +136,27 @@ int bus_type_get_size(char c) {
 
         return -EINVAL;
 }
+
+_public_ int sd_bus_interface_name_is_valid(const char *p) {
+        assert_return(p, -EINVAL);
+
+        return interface_name_is_valid(p);
+}
+
+_public_ int sd_bus_service_name_is_valid(const char *p) {
+        assert_return(p, -EINVAL);
+
+        return service_name_is_valid(p);
+}
+
+_public_ int sd_bus_member_name_is_valid(const char *p) {
+        assert_return(p, -EINVAL);
+
+        return member_name_is_valid(p);
+}
+
+_public_ int sd_bus_object_path_is_valid(const char *p) {
+        assert_return(p, -EINVAL);
+
+        return object_path_is_valid(p);
+}
index 61b5a493c7cad857880831b0a99e5b25f1c5f03e..d4b6befc8cb941f70343c44310aa00234fe85799 100644 (file)
@@ -124,6 +124,13 @@ typedef _sd_destroy_t sd_bus_destroy_t;
 #include "sd-bus-protocol.h"
 #include "sd-bus-vtable.h"
 
+/* Naming */
+
+int sd_bus_interface_name_is_valid(const char *p);
+int sd_bus_service_name_is_valid(const char *p);
+int sd_bus_member_name_is_valid(const char *p);
+int sd_bus_object_path_is_valid(const char *p);
+
 /* Connections */
 
 int sd_bus_default(sd_bus **ret);