I noticed these two calls to error assume that uid_t fits in int and
unsigned long int. Attached patch fixes it.
Collin
From 31aa496133ded6132ca94538ad9388eba589b3b3 Mon Sep 17 00:00:00 2001
From: Collin Funk <collin.fu...@gmail.com>
Date: Sun, 6 Oct 2024 22:19:51 -0700
Subject: [PATCH] chroot,whoami: use uintmax_t for printing uids
* src/chroot.c (main): Cast the uid to uintmax_t instead of int.
* src/whoami.c (main): Cast the uid to uintmax_t instead of unsigned
long int.
---
src/chroot.c | 3 ++-
src/whoami.c | 4 ++--
2 files changed, 4 insertions(+), 3 deletions(-)
diff --git a/src/chroot.c b/src/chroot.c
index e12454c84..1797a16d4 100644
--- a/src/chroot.c
+++ b/src/chroot.c
@@ -375,7 +375,8 @@ main (int argc, char **argv)
else if (gid_unset (gid))
{
error (EXIT_CANCELED, errno,
- _("no group specified for unknown uid: %d"), (int) uid);
+ _("no group specified for unknown uid: %ju"),
+ (uintmax_t) uid);
}
}
diff --git a/src/whoami.c b/src/whoami.c
index f64171dfe..834ca9ffc 100644
--- a/src/whoami.c
+++ b/src/whoami.c
@@ -81,8 +81,8 @@ main (int argc, char **argv)
uid = geteuid ();
pw = uid == NO_UID && errno ? nullptr : getpwuid (uid);
if (!pw)
- error (EXIT_FAILURE, errno, _("cannot find name for user ID %lu"),
- (unsigned long int) uid);
+ error (EXIT_FAILURE, errno, _("cannot find name for user ID %ju"),
+ (uintmax_t) uid);
puts (pw->pw_name);
return EXIT_SUCCESS;
}
--
2.46.2