From 405024cfe9fb6e7a4a49cd6d36fca20f3a1ceaed Mon Sep 17 00:00:00 2001 From: "giyeol.ok" Date: Thu, 27 Jun 2013 10:21:55 +0900 Subject: [PATCH] fix memory leak and return value Change-Id: I4db1099fad531a4cc4f83ee8d133f972395871a2 Signed-off-by: giyeol.ok --- fsck-msdos/check.c | 2 ++ src/mmc/mmc-handler.c | 13 ++++++++++--- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/fsck-msdos/check.c b/fsck-msdos/check.c index 0ef1a0a..bb5fbc2 100644 --- a/fsck-msdos/check.c +++ b/fsck-msdos/check.c @@ -108,6 +108,8 @@ checkfilesys(const char *fname) mod |= readfat(dosfs, &boot, boot.ValidFat >= 0 ? boot.ValidFat : 0, &fat); if (mod & FSFATAL) { printf("Fatal error during readfat()\n"); + if (fat) + free(fat); close(dosfs); return 8; } diff --git a/src/mmc/mmc-handler.c b/src/mmc/mmc-handler.c index 6c40be6..dbbcb15 100644 --- a/src/mmc/mmc-handler.c +++ b/src/mmc/mmc-handler.c @@ -767,14 +767,13 @@ int register_mmc_handler(const char *name, const struct mmc_filesystem_ops files if (!entry->name) { _E("Malloc failed"); - free(entry); - return -1; + goto free_entry; } entry->fs_ops = malloc(sizeof(struct mmc_filesystem_ops)); if (!entry->fs_ops) { _E("Malloc failed"); - return -1; + goto free_entry_with_name; } entry->fs_ops->init = filesystem_type.init; @@ -788,6 +787,14 @@ int register_mmc_handler(const char *name, const struct mmc_filesystem_ops files entry = get_mmc_fs(tmp, struct mmc_filesystem_info, list); } return 0; + + free_entry_with_name: + free(entry->name); + + free_entry: + free(entry); + + return -1; } static void ss_mmc_booting_done(void* data) -- 2.7.4