X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Flibsystemd-bus%2Fbus-signature.c;h=1e5bf4821d9526da05478c92cfe2785acd611b08;hb=753e98788a9bcbd3bba2b3006672c003ae72eefa;hp=a92b7124c32b3b72a702d2a601e8e8b1c28e5614;hpb=813a4f93750be40eff13f127dfef8364642a13bc;p=elogind.git diff --git a/src/libsystemd-bus/bus-signature.c b/src/libsystemd-bus/bus-signature.c index a92b7124c..1e5bf4821 100644 --- a/src/libsystemd-bus/bus-signature.c +++ b/src/libsystemd-bus/bus-signature.c @@ -33,7 +33,10 @@ static int signature_element_length_internal( int r; - assert(s); + if (!s) + return -EINVAL; + + assert(l); if (bus_type_is_basic(*s) || *s == SD_BUS_TYPE_VARIANT) { *l = 1; @@ -110,13 +113,14 @@ int signature_element_length(const char *s, size_t *l) { return signature_element_length_internal(s, true, 0, 0, l); } -bool signature_is_single(const char *s) { +bool signature_is_single(const char *s, bool allow_dict_entry) { int r; size_t t; - assert(s); + if (!s) + return false; - r = signature_element_length(s, &t); + r = signature_element_length_internal(s, allow_dict_entry, 0, 0, &t); if (r < 0) return false; @@ -124,19 +128,22 @@ bool signature_is_single(const char *s) { } bool signature_is_pair(const char *s) { - assert(s); + + if (!s) + return false; if (!bus_type_is_basic(*s)) return false; - return signature_is_single(s + 1); + return signature_is_single(s + 1, false); } bool signature_is_valid(const char *s, bool allow_dict_entry) { const char *p; int r; - assert(s); + if (!s) + return false; p = s; while (*p) {