X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=udev%2Flib%2Flibudev-util.c;h=50eacdd37d760c402b56a1462a8f4708f9b45095;hb=93b0f384589fce818edb9678571a30e71930d14c;hp=7aea8c67fba38ad464895b4889f5bbf397a90403;hpb=75250977137c26f706fc1514aca7982107859b1c;p=elogind.git diff --git a/udev/lib/libudev-util.c b/udev/lib/libudev-util.c index 7aea8c67f..50eacdd37 100644 --- a/udev/lib/libudev-util.c +++ b/udev/lib/libudev-util.c @@ -27,6 +27,7 @@ #include #include #include +#include #include #include "libudev.h" @@ -97,7 +98,7 @@ int util_resolve_sys_link(struct udev *udev, char *devpath, size_t size) } struct util_name_entry *util_name_list_add(struct udev *udev, struct list_head *name_list, - const char *name, int sort) + const char *name, const char *value, int sort) { struct util_name_entry *name_loop; struct util_name_entry *name_new; @@ -126,7 +127,14 @@ struct util_name_entry *util_name_list_add(struct udev *udev, struct list_head * free(name_new); return NULL; } - dbg(udev, "adding '%s'\n", name_new->name); + if (value != NULL) { + name_new->value = strdup(value); + if (name_new->value == NULL) { + free(name_new); + return NULL; + } + } + dbg(udev, "adding '%s=%s'\n", name_new->name, name_new->value); list_add_tail(&name_new->node, &name_loop->node); return name_new; } @@ -139,6 +147,7 @@ void util_name_list_cleanup(struct udev *udev, struct list_head *name_list) list_for_each_entry_safe(name_loop, name_tmp, name_list, node) { list_del(&name_loop->node); free(name_loop->name); + free(name_loop->value); free(name_loop); } }