file-helper: fix possible memleak 29/237929/2
authorMaciej Słodczyk <m.slodczyk2@partner.samsung.com>
Mon, 6 Jul 2020 12:45:55 +0000 (14:45 +0200)
committerMaciej Słodczyk <m.slodczyk2@partner.samsung.com>
Mon, 6 Jul 2020 15:56:10 +0000 (17:56 +0200)
Assigning NULL to **str passed pointer on fgets() error
may result in being unable to free memory pointed by *str
(if it was previously allocated dynamically).

Change-Id: Ieda457c4d9da02dab277d476ed79537da41e744e
Signed-off-by: Maciej Słodczyk <m.slodczyk2@partner.samsung.com>
src/common/file-helper.c

index e82a88b..c1737a4 100644 (file)
@@ -93,15 +93,17 @@ int fwrite_ulong(const char *path, const unsigned long number)
 int fread_str(const char *path, char **str)
 {
        _cleanup_fclose_ FILE *f = NULL;
+       char *ret;
 
        f = fopen(path, "r");
        ret_value_errno_msg_if(!f, -errno,
                        "Fail to open %s file.", path);
 
-       *str = fgets(*str, LINE_MAX, f);
-       ret_value_errno_msg_if(!(*str), -ENODATA,
+       ret = fgets(*str, LINE_MAX, f);
+       ret_value_errno_msg_if(!ret, -ENODATA,
                        "Fail to read file\n");
 
+       *str = ret;
        return RESOURCED_ERROR_NONE;
 }