From 6ffe86ca12c0a1b532532284aebe4ce417323cdb Mon Sep 17 00:00:00 2001 From: Martin Stiborsky Date: Mon, 5 Jan 2015 22:54:32 +0100 Subject: [PATCH] null check for getpwuid and pw_name --- i3lock.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/i3lock.c b/i3lock.c index bead884..4f9d5d4 100644 --- a/i3lock.c +++ b/i3lock.c @@ -661,7 +661,8 @@ static void raise_loop(xcb_window_t window) { } int main(int argc, char *argv[]) { - char *username = getpwuid(getuid())->pw_name; + struct passwd *pw = getpwuid(getuid()); + char *username; char *image_path = NULL; int ret; struct pam_conv conv = {conv_callback, NULL}; @@ -686,8 +687,10 @@ int main(int argc, char *argv[]) { {NULL, no_argument, NULL, 0} }; - if (username == NULL) + if (pw == NULL) err(EXIT_FAILURE, "getpwuid() failed"); + if ((username = pw->pw_name) == NULL) + errx(EXIT_FAILURE, "pw->pw_name is NULL.\n"); char *optstring = "hvnbdc:p:ui:teI:f"; while ((o = getopt_long(argc, argv, optstring, longopts, &optind)) != -1) {