fix return value checks in load_list functions
Signed-off-by: Ivana Hutarova Varekova <[email protected]>
---
src/tools/cgsnapshot.c | 25 +++++++++++++++++++++----
1 files changed, 21 insertions(+), 4 deletions(-)
diff --git a/src/tools/cgsnapshot.c b/src/tools/cgsnapshot.c
index 0ff7435..8c8e268 100644
--- a/src/tools/cgsnapshot.c
+++ b/src/tools/cgsnapshot.c
@@ -101,7 +101,7 @@ int load_list(char *filename, struct black_list_type
**p_list)
return 1;
}
- /* go through the all configuration file and search the line */
+ /* go through the configuration file and search the line */
while (fgets(buf, FILENAME_MAX, fw) != NULL) {
buf[FILENAME_MAX-1] = '\0';
i = 0;
@@ -118,13 +118,21 @@ int load_list(char *filename, struct black_list_type
**p_list)
if (new == NULL) {
fprintf(stderr, "ERROR: Memory allocation problem "
"(%s)\n", strerror(errno));
- *p_list = NULL;
- return 1;
+ ret = 1;
+ goto err;
}
ret = sscanf(buf, "%s", name);
- new->name = strdup(name);
+ if (ret == 0)
+ continue;
+ new->name = strdup(name);
+ if (new->name == NULL) {
+ fprintf(stderr, "ERROR: Memory allocation problem "
+ "(%s)\n", strerror(errno));
+ ret = 1;
+ goto err;
+ }
new->next = NULL;
/* update the variables list */
@@ -140,6 +148,15 @@ int load_list(char *filename, struct black_list_type
**p_list)
fclose(fw);
*p_list = start;
return 0;
+
+err:
+ new = start;
+ while (new != NULL) {
+ end = new->next;
+ free(new);
+ }
+ *p_list = NULL;
+ return ret;
}
/* free list structure */
------------------------------------------------------------------------------
Simplify data backup and recovery for your virtual environment with vRanger.
Installation's a snap, and flexible recovery options mean your data is safe,
secure and there when you need it. Discover what all the cheering's about.
Get your free trial download today.
http://p.sf.net/sfu/quest-dev2dev2
_______________________________________________
Libcg-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/libcg-devel