diff options
Diffstat (limited to 'src/libelogind/sd-bus/bus-signature.c')
-rw-r--r-- | src/libelogind/sd-bus/bus-signature.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/src/libelogind/sd-bus/bus-signature.c b/src/libelogind/sd-bus/bus-signature.c index 18c91e870..1ca37cbb5 100644 --- a/src/libelogind/sd-bus/bus-signature.c +++ b/src/libelogind/sd-bus/bus-signature.c @@ -58,6 +58,12 @@ static int signature_element_length_internal( p += t; } + if (p - s < 2) + /* D-Bus spec: Empty structures are not allowed; there + * must be at least one type code between the parentheses. + */ + return -EINVAL; + *l = p - s + 1; return 0; } |