diff options
Diffstat (limited to 'src/software-dbus/sw-utils.c')
-rw-r--r-- | src/software-dbus/sw-utils.c | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/src/software-dbus/sw-utils.c b/src/software-dbus/sw-utils.c index d06bf03..76ca58b 100644 --- a/src/software-dbus/sw-utils.c +++ b/src/software-dbus/sw-utils.c @@ -117,6 +117,11 @@ short create_sw_package_from_elem_name(const char *elem_name, SwPackage *sw_pkg) init_sw_package(sw_pkg); + if (!elem_name || !*elem_name) { + warn("Empty element name."); + goto done; + } + if (!(en = strdup(elem_name))) { warn("Memory allocation failed."); goto done; @@ -606,6 +611,27 @@ gint pk_det_cmp(gpointer a, gpointer b) * Functions related to CMPI ******************************************************************************/ +const char *get_elem_name_from_instance_id(const char *instance_id) +{ + if (!instance_id || !*instance_id) { + warn("Empty InstanceID."); + return ""; + } + + if (strlen(instance_id) <= SW_IDENTITY_INSTANCE_ID_PREFIX_LEN) { + warn("Invalid InstanceID: %s", instance_id); + return ""; + } + + if (strncasecmp(instance_id, SW_IDENTITY_INSTANCE_ID_PREFIX, + SW_IDENTITY_INSTANCE_ID_PREFIX_LEN) != 0) { + warn("Invalid InstanceID: %s", instance_id); + return ""; + } + + return instance_id + SW_IDENTITY_INSTANCE_ID_PREFIX_LEN; +} + void create_instance_id(const char *class_name, const char *id, char *instance_id, const unsigned instance_id_len) { |