]> git.sur5r.net Git - i3/i3lock/commitdiff
null check for getpwuid and pw_name
authorMartin Stiborsky <martin.stiborsky@gmail.com>
Mon, 5 Jan 2015 21:54:32 +0000 (22:54 +0100)
committerMartin Stiborsky <martin.stiborsky@gmail.com>
Mon, 5 Jan 2015 21:54:32 +0000 (22:54 +0100)
i3lock.c

index bead8841cd5aa1f4a20d3d815a69e53301b53dd8..4f9d5d4ea8c046dde4239b86b1f77fd0d79d5909 100644 (file)
--- 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) {