]> git.sur5r.net Git - i3/i3/commitdiff
properly free memory/close fd upon errors (Thanks xeen)
authorMichael Stapelberg <michael@stapelberg.de>
Wed, 31 Aug 2011 12:44:48 +0000 (14:44 +0200)
committerMichael Stapelberg <michael@stapelberg.de>
Wed, 31 Aug 2011 12:44:48 +0000 (14:44 +0200)
Found with the static analyzer cppcheck

src/cfgparse.y
src/ipc.c
src/util.c

index c0bf92af556fee1b364373af01d7830321456e1f..5b2b4b5c7378308e08ca021a764ed1560a6d0108 100644 (file)
@@ -188,6 +188,7 @@ static char *migrate_config(char *input, off_t size) {
         ret = read(readpipe[0], converted + read_bytes, conv_size - read_bytes);
         if (ret == -1) {
             warn("Cannot read from pipe");
+            FREE(converted);
             return NULL;
         }
         read_bytes += ret;
index dfb1fd68a7c7c62da71ea37139f15cb0be06b910..5f4d59cc48632e4c9ff5f41474756893fc435691 100644 (file)
--- a/src/ipc.c
+++ b/src/ipc.c
@@ -59,8 +59,10 @@ static bool mkdirp(const char *path) {
         copy[strlen(copy)-1] = '\0';
 
     char *sep = strrchr(copy, '/');
-    if (sep == NULL)
+    if (sep == NULL) {
+        FREE(copy);
         return false;
+    }
     *sep = '\0';
     bool result = false;
     if (mkdirp(copy))
index fc0a5ceb312b39dfbca608a661690237ae76c3a4..2d6c3e147138d147de2f80dacb5bc1d74b950a67 100644 (file)
@@ -374,11 +374,13 @@ char *store_restart_layout() {
         if (n == -1) {
             perror("write()");
             free(filename);
+            close(fd);
             return NULL;
         }
         if (n == 0) {
             printf("write == 0?\n");
             free(filename);
+            close(fd);
             return NULL;
         }
         written += n;