[systemd-commits] src/condition.c src/dbus.c src/dbus-manager.c src/dbus-unit.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 TODO

Lennart Poettering lennart at kemper.freedesktop.org
Thu Mar 31 06:35:50 PDT 2011


 TODO                   |    2 ++
 src/condition.c        |    4 +++-
 src/dbus-manager.c     |    8 +++++---
 src/dbus-unit.c        |    4 ++--
 src/dbus.c             |    6 +++---
 src/execute.c          |    2 +-
 src/manager.c          |    2 +-
 src/modules-load.c     |    8 ++++++--
 src/mount.c            |    1 +
 src/readahead-replay.c |    3 ++-
 src/service.c          |    5 +++--
 src/shutdownd.c        |    2 +-
 src/socket.c           |    2 ++
 src/strv.c             |    6 +++++-
 src/swap.c             |    1 +
 src/unit.c             |    3 +--
 src/util.c             |    1 -
 17 files changed, 39 insertions(+), 21 deletions(-)

New commits:
commit da19d5c19f60ec80e1733b1e994311c59c6eda73
Author: Lennart Poettering <lennart at poettering.net>
Date:   Thu Mar 31 15:35:40 2011 +0200

    src: our lord is coverity

diff --git a/TODO b/TODO
index aa4c37f..c8e964a 100644
--- 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
diff --git a/src/condition.c b/src/condition.c
index 61812c2..b404b49 100644
--- a/src/condition.c
+++ b/src/condition.c
@@ -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;
diff --git a/src/dbus-manager.c b/src/dbus-manager.c
index 92a6022..2f755bc 100644
--- a/src/dbus-manager.c
+++ b/src/dbus-manager.c
@@ -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:
diff --git a/src/dbus-unit.c b/src/dbus-unit.c
index 563ef70..b5daa66 100644
--- a/src/dbus-unit.c
+++ b/src/dbus-unit.c
@@ -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:
diff --git a/src/dbus.c b/src/dbus.c
index 31b1ce6..6f43c41 100644
--- a/src/dbus.c
+++ b/src/dbus.c
@@ -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;
diff --git a/src/execute.c b/src/execute.c
index cd44640..b7ae522 100644
--- a/src/execute.c
+++ b/src/execute.c
@@ -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;
diff --git a/src/manager.c b/src/manager.c
index fdb5bed..dae746c 100644
--- a/src/manager.c
+++ b/src/manager.c
@@ -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;
diff --git a/src/modules-load.c b/src/modules-load.c
index 2dd4326..3824b57 100644
--- a/src/modules-load.c
+++ b/src/modules-load.c
@@ -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;
 
diff --git a/src/mount.c b/src/mount.c
index 209e19c..2d8542d 100644
--- a/src/mount.c
+++ b/src/mount.c
@@ -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;
                 }
         }
 
diff --git a/src/readahead-replay.c b/src/readahead-replay.c
index fee2171..0b84528 100644
--- a/src/readahead-replay.c
+++ b/src/readahead-replay.c
@@ -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;
diff --git a/src/service.c b/src/service.c
index c74e8a0..728ca0b 100644
--- a/src/service.c
+++ b/src/service.c
@@ -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;
                 }
         }
 
diff --git a/src/shutdownd.c b/src/shutdownd.c
index 143fa8d..6b92cee 100644
--- a/src/shutdownd.c
+++ b/src/shutdownd.c
@@ -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;
                 }
         }
 
diff --git a/src/socket.c b/src/socket.c
index 72be0e2..beb3286 100644
--- a/src/socket.c
+++ b/src/socket.c
@@ -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);
diff --git a/src/strv.c b/src/strv.c
index c8ff574..c5f8df0 100644
--- a/src/strv.c
+++ b/src/strv.c
@@ -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);
 
diff --git a/src/swap.c b/src/swap.c
index 66bf5c2..c32f608 100644
--- a/src/swap.c
+++ b/src/swap.c
@@ -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;
                 }
         }
 
diff --git a/src/unit.c b/src/unit.c
index 4f83778..6fd4dc6 100644
--- a/src/unit.c
+++ b/src/unit.c
@@ -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);
diff --git a/src/util.c b/src/util.c
index a44fea0..5a5cdce 100644
--- a/src/util.c
+++ b/src/util.c
@@ -3582,7 +3582,6 @@ char *normalize_env_assignment(const char *s) {
         free(p);
 
         if (!value) {
-                free(p);
                 free(name);
                 return NULL;
         }



More information about the systemd-commits mailing list