From: Mauro Dreissig Date: Mon, 12 Nov 2012 00:07:51 +0000 (-0200) Subject: libudev: avoid leak during realloc failure X-Git-Tag: v196~99 X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=commitdiff_plain;h=cf2292f5ac87087f57dbd632a25a332c9d194ebf;ds=sidebyside libudev: avoid leak during realloc failure --- diff --git a/src/libudev/libudev-list.c b/src/libudev/libudev-list.c index 1578aecaa..59ba69e27 100644 --- a/src/libudev/libudev-list.c +++ b/src/libudev/libudev-list.c @@ -185,18 +185,20 @@ struct udev_list_entry *udev_list_entry_add(struct udev_list *list, const char * if (list->unique) { /* allocate or enlarge sorted array if needed */ if (list->entries_cur >= list->entries_max) { + struct udev_list_entry **entries; unsigned int add; add = list->entries_max; if (add < 1) add = 64; - list->entries = realloc(list->entries, (list->entries_max + add) * sizeof(struct udev_list_entry *)); - if (list->entries == NULL) { + entries = realloc(list->entries, (list->entries_max + add) * sizeof(struct udev_list_entry *)); + if (entries == NULL) { free(entry->name); free(entry->value); free(entry); return NULL; } + list->entries = entries; list->entries_max += add; }