# # # patch "lib/libc/gen/pw_scan.c" # from [483f12a18329f6e15f3a292fbc7a9b94924a9870] # to [22ce19a8128a7cb39873217b74a522af050acac1] # ============================================================ --- lib/libc/gen/pw_scan.c 483f12a18329f6e15f3a292fbc7a9b94924a9870 +++ lib/libc/gen/pw_scan.c 22ce19a8128a7cb39873217b74a522af050acac1 @@ -195,16 +195,24 @@ pw_scan( char *bp, struct passwd *pw, in pw->pw_expire = 0; *flags |= (_PASSWORD_NOCHG | _PASSWORD_NOEXP); } else { + /* + * sizeof(pw_change) != sizeof(time_t) when compat struct passwd + * is built on 32-bit time_t host. + */ + time_t tmp; + pw->pw_class = strsep(&bp, ":"); /* class */ if (!(p = strsep(&bp, ":"))) /* change */ goto fmt; - if (!gettime(&pw->pw_change, p, flags, dowarn, _PASSWORD_NOCHG)) + if (!gettime(&tmp, p, flags, dowarn, _PASSWORD_NOCHG)) return 0; + pw->pw_change = tmp; if (!(p = strsep(&bp, ":"))) /* expire */ goto fmt; - if (!gettime(&pw->pw_expire, p, flags, dowarn, _PASSWORD_NOEXP)) + if (!gettime(&tmp, p, flags, dowarn, _PASSWORD_NOEXP)) return 0; + pw->pw_expire = tmp; } pw->pw_gecos = strsep(&bp, ":"); /* gecos */