fix format strings for uid/gid values in putpwent/putgrent
authorRich Felker <dalias@aerifal.cx>
Thu, 16 May 2019 21:12:56 +0000 (17:12 -0400)
committerRich Felker <dalias@aerifal.cx>
Thu, 16 May 2019 21:19:03 +0000 (17:19 -0400)
commit 648c3b4e18b2ce2b6af7d44783e42ca267ea49f5 omitted this change,
which is needed to be able to use uid/gid values greater than INT_MAX
with these interfaces. it fixes alpine linux bug #10460.

src/passwd/putgrent.c
src/passwd/putpwent.c

index a0b320fc32692bc244d40f0c0191f8d94eefb388..2a8257dc9c2dfb0e8a41c4cd98a698a6cc42aad5 100644 (file)
@@ -7,7 +7,7 @@ int putgrent(const struct group *gr, FILE *f)
        int r;
        size_t i;
        flockfile(f);
-       if ((r = fprintf(f, "%s:%s:%d:", gr->gr_name, gr->gr_passwd, gr->gr_gid))<0) goto done;
+       if ((r = fprintf(f, "%s:%s:%u:", gr->gr_name, gr->gr_passwd, gr->gr_gid))<0) goto done;
        if (gr->gr_mem) for (i=0; gr->gr_mem[i]; i++)
                if ((r = fprintf(f, "%s%s", i?",":"", gr->gr_mem[i]))<0) goto done;
        r = fputc('\n', f);
index 3a02e5730482044d56e1458b26360fefa3f85541..312b76530254d14b246ca1fc5972096c3f53ba65 100644 (file)
@@ -4,7 +4,7 @@
 
 int putpwent(const struct passwd *pw, FILE *f)
 {
-       return fprintf(f, "%s:%s:%d:%d:%s:%s:%s\n",
+       return fprintf(f, "%s:%s:%u:%u:%s:%s:%s\n",
                pw->pw_name, pw->pw_passwd, pw->pw_uid, pw->pw_gid,
                pw->pw_gecos, pw->pw_dir, pw->pw_shell)<0 ? -1 : 0;
 }