summaryrefslogtreecommitdiffstats
path: root/src/software-dbus/sw-utils.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/software-dbus/sw-utils.c')
-rw-r--r--src/software-dbus/sw-utils.c26
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)
{