Signed-off-by: Djalal Harouni <tix...@opendz.org> --- util.c | 22 ++++++++++++++++++++++ util.h | 2 ++ 2 files changed, 24 insertions(+)
diff --git a/util.c b/util.c index 6dbcd8d..2e13f7c 100644 --- a/util.c +++ b/util.c @@ -14,6 +14,7 @@ #include <linux/string.h> #include "util.h" +#include "defaults.h" /** * kdbus_sysname_valid() - validate names showing up in /proc, /sys and /dev @@ -45,3 +46,24 @@ int kdbus_sysname_is_valid(const char *name) return 0; } + +/** + * kdbus_item_validate_name() - validate an item containing a name + * @item: Item to validate + * + * Return: zero on success or an negative error code on failure + */ +int kdbus_item_validate_name(const struct kdbus_item *item) +{ + if (item->size < KDBUS_ITEM_HEADER_SIZE + 2) + return -EINVAL; + + if (item->size > KDBUS_ITEM_HEADER_SIZE + + KDBUS_SYSNAME_MAX_LEN + 1) + return -ENAMETOOLONG; + + if (!kdbus_item_validate_nul(item)) + return -EINVAL; + + return kdbus_sysname_is_valid(item->str); +} diff --git a/util.h b/util.h index c8f44aa..06290fc 100644 --- a/util.h +++ b/util.h @@ -113,4 +113,6 @@ static inline unsigned int kdbus_str_hash(const char *str) } int kdbus_sysname_is_valid(const char *name); + +int kdbus_item_validate_name(const struct kdbus_item *item); #endif -- 1.8.5.3 _______________________________________________ systemd-devel mailing list systemd-devel@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/systemd-devel