summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHwankyu Jhun <h.jhun@samsung.com>2021-09-06 09:39:11 +0900
committerHwankyu Jhun <h.jhun@samsung.com>2021-09-06 09:41:08 +0900
commit70bf599f4c3811ca0b3682077fbac0b69c8f9853 (patch)
treeaa72b9a9dd58efad9cd0d5adcea60050a5c5b9d4
parent786a626ace238ebc266509d7102c11909e7948e0 (diff)
downloadxdgmime-70bf599f4c3811ca0b3682077fbac0b69c8f9853.tar.gz
xdgmime-70bf599f4c3811ca0b3682077fbac0b69c8f9853.tar.bz2
xdgmime-70bf599f4c3811ca0b3682077fbac0b69c8f9853.zip
Fix static analysis issues
- Fixes resource leak - Fixes uninitialized pointer read Change-Id: I261b92e787162dd54983267ac6aa80d0c9e038ad Signed-off-by: Hwankyu Jhun <h.jhun@samsung.com>
-rw-r--r--xdgmime/src/xdgmime.c22
-rw-r--r--xdgmime/src/xdgmimecache.c20
-rw-r--r--xdgmime/src/xdgmimeglobs2.c5
3 files changed, 31 insertions, 16 deletions
diff --git a/xdgmime/src/xdgmime.c b/xdgmime/src/xdgmime.c
index f898cc1..03ac931 100644
--- a/xdgmime/src/xdgmime.c
+++ b/xdgmime/src/xdgmime.c
@@ -553,22 +553,25 @@ xdg_mime_get_mime_type_for_file (const char *file_name,
file = fopen (file_name, "r");
if (file == NULL)
- {
- free (data);
- return XDG_MIME_TYPE_UNKNOWN;
- }
+ return XDG_MIME_TYPE_UNKNOWN;
if (!statbuf)
{
fd = fileno(file);
if (fstat (fd, &buf) != 0)
- return XDG_MIME_TYPE_UNKNOWN;
+ {
+ fclose(file);
+ return XDG_MIME_TYPE_UNKNOWN;
+ }
statbuf = &buf;
}
if (!S_ISREG (statbuf->st_mode))
- return XDG_MIME_TYPE_UNKNOWN;
+ {
+ fclose(file);
+ return XDG_MIME_TYPE_UNKNOWN;
+ }
/* FIXME: Need to make sure that max_extent isn't totally broken. This could
* be large and need getting from a stream instead of just reading it all
@@ -576,8 +579,11 @@ xdg_mime_get_mime_type_for_file (const char *file_name,
max_extent = _xdg_mime_magic_get_buffer_extents (global_magic);
data = malloc (max_extent);
if (data == NULL)
- return XDG_MIME_TYPE_UNKNOWN;
-
+ {
+ fclose(file);
+ return XDG_MIME_TYPE_UNKNOWN;
+ }
+
bytes_read = fread (data, 1, max_extent, file);
if (ferror (file))
{
diff --git a/xdgmime/src/xdgmimecache.c b/xdgmime/src/xdgmimecache.c
index dd52f21..08188b5 100644
--- a/xdgmime/src/xdgmimecache.c
+++ b/xdgmime/src/xdgmimecache.c
@@ -745,22 +745,25 @@ _xdg_mime_cache_get_mime_type_for_file (const char *file_name,
file = fopen (file_name, "r");
if (file == NULL)
- {
- free (data);
- return XDG_MIME_TYPE_UNKNOWN;
- }
+ return XDG_MIME_TYPE_UNKNOWN;
if (!statbuf)
{
fd = fileno(file);
if (fstat (fd, &buf) != 0)
- return XDG_MIME_TYPE_UNKNOWN;
+ {
+ fclose(file);
+ return XDG_MIME_TYPE_UNKNOWN;
+ }
statbuf = &buf;
}
if (!S_ISREG (statbuf->st_mode))
- return XDG_MIME_TYPE_UNKNOWN;
+ {
+ fclose(file);
+ return XDG_MIME_TYPE_UNKNOWN;
+ }
/* FIXME: Need to make sure that max_extent isn't totally broken. This could
* be large and need getting from a stream instead of just reading it all
@@ -768,7 +771,10 @@ _xdg_mime_cache_get_mime_type_for_file (const char *file_name,
max_extent = _xdg_mime_cache_get_max_buffer_extents ();
data = malloc (max_extent);
if (data == NULL)
- return XDG_MIME_TYPE_UNKNOWN;
+ {
+ fclose(file);
+ return XDG_MIME_TYPE_UNKNOWN;
+ }
bytes_read = fread (data, 1, max_extent, file);
if (ferror (file))
diff --git a/xdgmime/src/xdgmimeglobs2.c b/xdgmime/src/xdgmimeglobs2.c
index 65d3c8f..c30aa86 100644
--- a/xdgmime/src/xdgmimeglobs2.c
+++ b/xdgmime/src/xdgmimeglobs2.c
@@ -238,7 +238,10 @@ mime_type_info_list_reload(mime_type_info_list *mtil)
* If reconstruction is not needed, just exit function */
fd = fileno(globs2);
if (fstat(fd, &globs2_stat) ||
- globs2_stat.st_mtime <= mtil->globs2_mtime ) return;
+ globs2_stat.st_mtime <= mtil->globs2_mtime ) {
+ fclose(globs2);
+ return;
+ }
/* clean old mtil */
mime_type_info **mti;