From de3756ab9916551f3f4f1f360aee59aeed238b5b Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Fri, 23 Sep 2011 02:39:28 +0200 Subject: [PATCH 1/1] llvm-analyze: fix some bugs found by llvm-analyze --- src/loginctl.c | 3 +-- src/sd-login.c | 41 +++++++++++++++++++++++------------------ src/socket.c | 6 ++++++ 3 files changed, 30 insertions(+), 20 deletions(-) diff --git a/src/loginctl.c b/src/loginctl.c index ba8020df2..811c3f1a9 100644 --- a/src/loginctl.c +++ b/src/loginctl.c @@ -1063,10 +1063,9 @@ static int show(DBusConnection *bus, char **args, unsigned n) { uid_t uid; uint32_t u; - r = get_user_creds((const char**) (args+i), &uid, NULL, NULL); + ret = get_user_creds((const char**) (args+i), &uid, NULL, NULL); if (r < 0) { log_error("User %s unknown.", args[i]); - r = -ENOENT; goto finish; } diff --git a/src/sd-login.c b/src/sd-login.c index b670d1826..a0a56c495 100644 --- a/src/sd-login.c +++ b/src/sd-login.c @@ -481,34 +481,39 @@ _public_ int sd_seat_get_sessions(const char *seat, char ***sessions, uid_t **ui if (uids && t) { char *w, *state; size_t l; - unsigned i = 0; FOREACH_WORD(w, l, t, state) n++; - b = new(uid_t, n); - if (!b) { - strv_free(a); - return -ENOMEM; - } + if (n == 0) + b = NULL; + else { + unsigned i = 0; - FOREACH_WORD(w, l, t, state) { - char *k; - - k = strndup(w, l); - if (!k) { - free(t); - free(b); + b = new(uid_t, n); + if (!b) { strv_free(a); return -ENOMEM; } - r = parse_uid(k, b + i); - free(k); - if (r < 0) - continue; + FOREACH_WORD(w, l, t, state) { + char *k; - i++; + k = strndup(w, l); + if (!k) { + free(t); + free(b); + strv_free(a); + return -ENOMEM; + } + + r = parse_uid(k, b + i); + free(k); + if (r < 0) + continue; + + i++; + } } } diff --git a/src/socket.c b/src/socket.c index a1b451eba..7ddf326a2 100644 --- a/src/socket.c +++ b/src/socket.c @@ -1962,6 +1962,12 @@ int socket_collect_fds(Socket *s, int **fds, unsigned *n_fds) { if (p->fd >= 0) rn_fds++; + if (rn_fds <= 0) { + *fds = NULL; + *n_fds = 0; + return 0; + } + if (!(rfds = new(int, rn_fds))) return -ENOMEM; -- 2.30.2