chiark / gitweb /
src: our lord is coverity
authorLennart Poettering <lennart@poettering.net>
Thu, 31 Mar 2011 13:35:40 +0000 (15:35 +0200)
committerLennart Poettering <lennart@poettering.net>
Thu, 31 Mar 2011 13:35:40 +0000 (15:35 +0200)
17 files changed:
TODO
src/condition.c
src/dbus-manager.c
src/dbus-unit.c
src/dbus.c
src/execute.c
src/manager.c
src/modules-load.c
src/mount.c
src/readahead-replay.c
src/service.c
src/shutdownd.c
src/socket.c
src/strv.c
src/swap.c
src/unit.c
src/util.c

diff --git a/TODO b/TODO
index aa4c37f3c95de6c2e9febeb11fddc04910412974..c8e964a688a14752efc771cb7638d6c76b3ec6eb 100644 (file)
--- a/TODO
+++ b/TODO
@@ -27,6 +27,8 @@ F15:
 
 * ply should do mkdir before writing pid file
 
+* ConditionDirectoryNotEmpty= needs to be documented
+
 Features:
 
 * teach dbus to activate all services it finds in /etc/systemd/services/org-*.service
index 61812c25705cfec2ca6d6f0675921616b2d13790..b404b49c925eba8c92a6a97420d0829c148c6c3a 100644 (file)
@@ -30,7 +30,9 @@
 Condition* condition_new(ConditionType type, const char *parameter, bool trigger, bool negate) {
         Condition *c;
 
-        c = new0(Condition, 1);
+        if (!(c = new0(Condition, 1)))
+                return NULL;
+
         c->type = type;
         c->trigger = trigger;
         c->negate = negate;
index 92a602219be536b86d8d15454dbba854599a9168..2f755bcc64dff28889710d26376af37c79a4f499 100644 (file)
@@ -1020,8 +1020,10 @@ static DBusHandlerResult bus_manager_message_handler(DBusConnection *connection,
                 if (!e)
                         goto oom;
 
-                if (!(reply = dbus_message_new_method_return(message)))
+                if (!(reply = dbus_message_new_method_return(message))) {
+                        strv_free(e);
                         goto oom;
+                }
 
                 strv_free(m->environment);
                 m->environment = e;
@@ -1108,8 +1110,6 @@ static DBusHandlerResult bus_manager_message_handler(DBusConnection *connection,
                         goto oom;
         }
 
-        free(path);
-
         if (reply) {
                 if (!dbus_connection_send(connection, reply, NULL))
                         goto oom;
@@ -1117,6 +1117,8 @@ static DBusHandlerResult bus_manager_message_handler(DBusConnection *connection,
                 dbus_message_unref(reply);
         }
 
+        free(path);
+
         return DBUS_HANDLER_RESULT_HANDLED;
 
 oom:
index 563ef7079a89e5500a31d25d61cd752fcbad5e4f..b5daa66b5d4b7032db623bfdddb185381eed6f97 100644 (file)
@@ -455,8 +455,6 @@ static DBusHandlerResult bus_unit_message_dispatch(Unit *u, DBusConnection *conn
                         goto oom;
         }
 
-        free(path);
-
         if (reply) {
                 if (!dbus_connection_send(connection, reply, NULL))
                         goto oom;
@@ -464,6 +462,8 @@ static DBusHandlerResult bus_unit_message_dispatch(Unit *u, DBusConnection *conn
                 dbus_message_unref(reply);
         }
 
+        free(path);
+
         return DBUS_HANDLER_RESULT_HANDLED;
 
 oom:
index 31b1ce6ee0706ec825892378eaf615e86cfffe70..6f43c4108e6e585083f5c43ddccc65e625a07da0 100644 (file)
@@ -176,8 +176,8 @@ static dbus_bool_t bus_add_watch(DBusWatch *bus_watch, void *data) {
                 }
 
                 if (epoll_ctl(m->epoll_fd, EPOLL_CTL_ADD, w->fd, &ev) < 0) {
-                        free(w);
                         close_nointr_nofail(w->fd);
+                        free(w);
                         return FALSE;
                 }
 
@@ -236,7 +236,7 @@ static int bus_timeout_arm(Manager *m, Watch *w) {
 
         if (dbus_timeout_get_enabled(w->data.bus_timeout)) {
                 timespec_store(&its.it_value, dbus_timeout_get_interval(w->data.bus_timeout) * USEC_PER_MSEC);
-                its.it_interval = its.it_interval;
+                its.it_interval = its.it_value;
         }
 
         if (timerfd_settime(w->fd, 0, &its, NULL) < 0)
@@ -269,7 +269,7 @@ static dbus_bool_t bus_add_timeout(DBusTimeout *timeout, void *data) {
         if (!(w = new0(Watch, 1)))
                 return FALSE;
 
-        if (!(w->fd = timerfd_create(CLOCK_MONOTONIC, TFD_NONBLOCK|TFD_CLOEXEC)) < 0)
+        if ((w->fd = timerfd_create(CLOCK_MONOTONIC, TFD_NONBLOCK|TFD_CLOEXEC)) < 0)
                 goto fail;
 
         w->type = WATCH_DBUS_TIMEOUT;
index cd44640a53088062b155d8306b920a1df906079e..b7ae522692f452f23b9107255e76aec5d07ac47d 100644 (file)
@@ -646,7 +646,7 @@ static int enforce_groups(const ExecContext *context, const char *username, gid_
                 char **i;
 
                 /* Final step, initialize any manually set supplementary groups */
-                ngroups_max = (int) sysconf(_SC_NGROUPS_MAX);
+                assert_se((ngroups_max = (int) sysconf(_SC_NGROUPS_MAX)) > 0);
 
                 if (!(gids = new(gid_t, ngroups_max)))
                         return -ENOMEM;
index fdb5beda21f0547eabe3e6b3fe0ec49c55deae50..dae746cae57cff1aa54970b38a6c6dcde5720695 100644 (file)
@@ -2615,7 +2615,7 @@ int manager_open_serialization(Manager *m, FILE **_f) {
         log_debug("Serializing state to %s", path);
         free(path);
 
-        if (!(f = fdopen(fd, "w+")) < 0)
+        if (!(f = fdopen(fd, "w+")))
                 return -errno;
 
         *_f = f;
index 2dd432695f5f4c028264cd111b5f5912cfcbb567..3824b57de7649293e65793b5e0123a0bdade05d7 100644 (file)
@@ -99,17 +99,21 @@ int main(int argc, char *argv[]) {
                 }
 
                 f = fopen(fn, "re");
-                free(fn);
 
                 if (!f) {
-                        if (errno == ENOENT)
+                        if (errno == ENOENT) {
+                                free(fn);
                                 continue;
+                        }
 
                         log_error("Failed to open %s: %m", fn);
+                        free(fn);
                         r = EXIT_FAILURE;
                         continue;
                 }
 
+                free(fn);
+
                 for (;;) {
                         char line[LINE_MAX], *l, *t;
 
index 209e19c175d127a07f15b30547d7ddfd6b36c5d3..2d8542d9dfd330795feaf67bf5a5da470b52916a 100644 (file)
@@ -785,6 +785,7 @@ static void mount_enter_signal(Mount *m, MountState state, bool success) {
                                 wait_for_exit = true;
 
                         set_free(pid_set);
+                        pid_set = NULL;
                 }
         }
 
index fee2171dd20114763d27943bbd8180ef07c71a5d..0b84528b0ee3d27dbae8cc8ccaa75511e6322200 100644 (file)
@@ -122,7 +122,8 @@ static int replay(const char *root) {
         FILE *pack = NULL;
         char line[LINE_MAX];
         int r = 0;
-        char *pack_fn = NULL, c;
+        char *pack_fn = NULL;
+        int c;
         bool on_ssd, ready = false;
         int prio;
         int inotify_fd = -1;
index c74e8a009f17c313e27180039463b81e666d4d8b..728ca0b0180ece820552ad496eff21c227a09b41 100644 (file)
@@ -406,7 +406,7 @@ static int sysv_fix_order(Service *s) {
 
                 /* FIXME: Maybe we should compare the name here lexicographically? */
 
-                if (!(r = unit_add_dependency(UNIT(s), d, UNIT(t), true)) < 0)
+                if ((r = unit_add_dependency(UNIT(s), d, UNIT(t), true)) < 0)
                         return r;
         }
 
@@ -1024,7 +1024,7 @@ static int fsck_fix_order(Service *s) {
                 else
                         continue;
 
-                if (!(r = unit_add_dependency(UNIT(s), d, UNIT(t), true)) < 0)
+                if ((r = unit_add_dependency(UNIT(s), d, UNIT(t), true)) < 0)
                         return r;
         }
 
@@ -1882,6 +1882,7 @@ static void service_enter_signal(Service *s, ServiceState state, bool success) {
                                 wait_for_exit = true;
 
                         set_free(pid_set);
+                        pid_set = NULL;
                 }
         }
 
index 143fa8d825feca845e2e998476f9ae1c2910e76b..6b92ceeb1e0597b10858d72231bfd9c46daed8a0 100644 (file)
@@ -227,7 +227,7 @@ int main(int argc, char *argv[]) {
 
                 if ((pollfd[i].fd = timerfd_create(CLOCK_REALTIME, TFD_NONBLOCK|TFD_CLOEXEC)) < 0) {
                         log_error("timerfd_create(): %m");
-                        failed = false;
+                        failed = true;
                 }
         }
 
index 72be0e2235f28266776dc8eb847fe85fac08d24b..beb328657fe5eb34a5d5eabffb4922f837177872 100644 (file)
@@ -1066,6 +1066,7 @@ static void socket_enter_signal(Socket *s, SocketState state, bool success) {
                                 wait_for_exit = true;
 
                         set_free(pid_set);
+                        pid_set = NULL;
                 }
         }
 
@@ -1695,6 +1696,7 @@ static void socket_timer_event(Unit *u, uint64_t elapsed, Watch *w) {
         case SOCKET_START_PRE:
                 log_warning("%s starting timed out. Terminating.", u->meta.id);
                 socket_enter_signal(s, SOCKET_FINAL_SIGTERM, false);
+                break;
 
         case SOCKET_START_POST:
                 log_warning("%s starting timed out. Stopping.", u->meta.id);
index c8ff5745e82024bead8e6f997f1d1f0f4e0815b6..c5f8df06da6e8325b36dbbe0dec5b5dc54910fe4 100644 (file)
@@ -78,9 +78,11 @@ char **strv_copy(char **l) {
         return r;
 
 fail:
-        for (k--, l--; k >= r; k--, l--)
+        for (k--; k >= r; k--)
                 free(*k);
 
+        free(r);
+
         return NULL;
 }
 
@@ -435,6 +437,8 @@ char **strv_env_merge(unsigned n_lists, ...) {
         return r;
 
 fail:
+        va_end(ap);
+
         for (k--; k >= r; k--)
                 free(*k);
 
index 66bf5c2bfbffae371099b118def1d499c975b32d..c32f60810c0f17444d12861e7080c4e10ed16bac 100644 (file)
@@ -687,6 +687,7 @@ static void swap_enter_signal(Swap *s, SwapState state, bool success) {
                                 wait_for_exit = true;
 
                         set_free(pid_set);
+                        pid_set = NULL;
                 }
         }
 
index 4f83778c53c1519f8b2a6acb8b1fcb15cbcba12b..6fd4dc6cb0a58bccfbea51100ff22b5f3e2341e3 100644 (file)
@@ -2035,8 +2035,7 @@ char **unit_full_printf_strv(Unit *u, char **l) {
         return r;
 
 fail:
-        j--;
-        while (j >= r)
+        for (j--; j >= r; j--)
                 free(*j);
 
         free(r);
index a44fea09cfdbb0234a7383c3a0424695964db20a..5a5cdceab42c5c893ac0ccd118cd456b1fdf9061 100644 (file)
@@ -3582,7 +3582,6 @@ char *normalize_env_assignment(const char *s) {
         free(p);
 
         if (!value) {
-                free(p);
                 free(name);
                 return NULL;
         }