From d343df4019b4369ce7f87e9bf6bbc80b81cd263d Mon Sep 17 00:00:00 2001 From: zhangjun Date: Fri, 22 Aug 2025 16:49:07 +0800 Subject: [PATCH] ensure struct passwd fields are non-NULL in pwcopy Android libc can return NULL pw_gecos, for example. --- misc.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/misc.c b/misc.c index 239ed1238..ce77ec943 100644 --- a/misc.c +++ b/misc.c @@ -506,7 +506,7 @@ pwcopy(struct passwd *pw) copy->pw_name = xstrdup(pw->pw_name); copy->pw_passwd = xstrdup(pw->pw_passwd == NULL ? "*" : pw->pw_passwd); #ifdef HAVE_STRUCT_PASSWD_PW_GECOS - copy->pw_gecos = xstrdup(pw->pw_gecos); + copy->pw_gecos = xstrdup(pw->pw_gecos == NULL ? "" : pw->pw_gecos); #endif copy->pw_uid = pw->pw_uid; copy->pw_gid = pw->pw_gid; @@ -517,10 +517,10 @@ pwcopy(struct passwd *pw) copy->pw_change = pw->pw_change; #endif #ifdef HAVE_STRUCT_PASSWD_PW_CLASS - copy->pw_class = xstrdup(pw->pw_class); + copy->pw_class = xstrdup(pw->pw_class == NULL ? "" : pw->pw_class); #endif - copy->pw_dir = xstrdup(pw->pw_dir); - copy->pw_shell = xstrdup(pw->pw_shell); + copy->pw_dir = xstrdup(pw->pw_dir == NULL ? "" : pw->pw_dir); + copy->pw_shell = xstrdup(pw->pw_shell == NULL ? "" : pw->pw_shell); return copy; } -- 2.47.3