[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH 1/3] envlist.c: handle strdup failure
From: |
jim |
Subject: |
[Qemu-devel] [PATCH 1/3] envlist.c: handle strdup failure |
Date: |
Tue, 15 May 2012 15:04:36 +0200 |
From: Jim Meyering <address@hidden>
Without this, envlist_to_environ may silently fail to copy all
strings into the destination buffer, and both callers would leak
any env strings allocated after a failing strdup, because the
freeing code stops at the first NULL pointer.
Signed-off-by: Jim Meyering <address@hidden>
---
envlist.c | 9 ++++++++-
1 file changed, 8 insertions(+), 1 deletion(-)
diff --git a/envlist.c b/envlist.c
index f2303cd..2bbd99c 100644
--- a/envlist.c
+++ b/envlist.c
@@ -235,7 +235,14 @@ envlist_to_environ(const envlist_t *envlist, size_t *count)
for (entry = envlist->el_entries.lh_first; entry != NULL;
entry = entry->ev_link.le_next) {
- *(penv++) = strdup(entry->ev_var);
+ if ((*(penv++) = strdup(entry->ev_var)) == NULL) {
+ char **e = env;
+ while (e != penv) {
+ free(*e++);
+ }
+ free(env);
+ return NULL;
+ }
}
*penv = NULL; /* NULL terminate the list */
--
1.7.10.2.484.gcd07cc5
- [Qemu-devel] [PATCH 0/3] unchecked uses of strdup, jim, 2012/05/15
- [Qemu-devel] [PATCH 1/3] envlist.c: handle strdup failure,
jim <=
- Re: [Qemu-devel] [PATCH 1/3] envlist.c: handle strdup failure, Blue Swirl, 2012/05/19
- Re: [Qemu-devel] [PATCH 1/3] envlist.c: handle strdup failure, Jim Meyering, 2012/05/21
- Re: [Qemu-devel] [PATCH 1/3] envlist.c: handle strdup failure, Blue Swirl, 2012/05/21
- Re: [Qemu-devel] [PATCH 1/3] envlist.c: handle strdup failure, Kevin Wolf, 2012/05/22
- Re: [Qemu-devel] [PATCH 1/3] envlist.c: handle strdup failure, Jim Meyering, 2012/05/22
- Re: [Qemu-devel] [PATCH 1/3] envlist.c: handle strdup failure, Kevin Wolf, 2012/05/22
- Re: [Qemu-devel] [PATCH 1/3] envlist.c: handle strdup failure, Jim Meyering, 2012/05/22
[Qemu-devel] [PATCH 3/3] sparc: use g_strdup in place of unchecked strdup, jim, 2012/05/15
[Qemu-devel] [PATCH 2/3] scsi, pci, qdev, isa-bus, sysbus: don't let *_get_fw_dev_path return NULL, jim, 2012/05/15