Fix static analysis issues
[platform/core/appfw/xdgmime.git] / xdgmime / src / xdgmimemagic.c
index a2320f5..7bd727c 100644 (file)
@@ -169,6 +169,9 @@ _xdg_mime_magic_read_to_newline (FILE *magic_file,
   len = 128;
   pos = 0;
   retval = malloc (len);
+  if (retval == NULL)
+    return NULL;
+
   *end_of_file = FALSE;
 
   while (TRUE)
@@ -185,7 +188,13 @@ _xdg_mime_magic_read_to_newline (FILE *magic_file,
       if (pos % 128 == 127)
        {
          len = len + 128;
-         retval = realloc (retval, len);
+         unsigned char *tmp = realloc (retval, len);
+          if (tmp == NULL)
+           {
+              free(retval);
+              return NULL;
+            }
+         retval = tmp;
        }
     }
 
@@ -231,7 +240,7 @@ _xdg_mime_magic_read_a_number (FILE *magic_file,
       errno = 0;
       retval = strtol (number_string, NULL, 10);
 
-      if ((retval < INT_MIN) || (retval > INT_MAX) || (errno != 0))
+      if ((retval == LONG_MIN) || (retval == LONG_MAX) || (errno != 0))
        return -1;
     }
 
@@ -271,8 +280,12 @@ _xdg_mime_magic_parse_header (FILE *magic_file, XdgMimeMagicMatch *match)
     return XDG_MIME_MAGIC_ERROR;
 
   buffer = (char *)_xdg_mime_magic_read_to_newline (magic_file, &end_of_file);
-  if (end_of_file)
+  if (end_of_file) {
+    if (buffer)
+      free(buffer);
+
     return XDG_MIME_MAGIC_EOF;
+  }
 
   end_ptr = buffer;
   while (*end_ptr != ']' && *end_ptr != '\000' && *end_ptr != '\n')
@@ -782,7 +795,6 @@ _xdg_mime_magic_read_magic_file (XdgMimeMagic *mime_magic,
        case XDG_MIME_MAGIC_ERROR:
          state = _xdg_mime_magic_parse_error (magic_file);
          break;
-       case XDG_MIME_MAGIC_EOF:
        default:
          /* Make the compiler happy */
          assert (0);