From 9b7d96458175a852f71700922ca2950577b95f27 Mon Sep 17 00:00:00 2001
From: Erik Andersen <andersen@codepoet.org>
Date: Mon, 1 May 2000 19:49:20 +0000
Subject: My little adventure of analyzing lib usage has already rooted out a
 big "P" Policy violator -- logname was using getlogin(3), which uses utmp
 under the hood.  We don't need no stinkin' utmp (and if we are using
 tinylogin, it is unlikely to be useful trying).  -Erik

---
 TODO                |  2 ++
 coreutils/logname.c | 10 +++++-----
 logname.c           | 10 +++++-----
 3 files changed, 12 insertions(+), 10 deletions(-)

diff --git a/TODO b/TODO
index 8b4279d87..fade2e249 100644
--- a/TODO
+++ b/TODO
@@ -44,6 +44,8 @@ It would be a very nice thing to reduce this list to an absolute minimum, and
 then create a microLibc to provide these functions.  There is no good reason
 for GNU libc to be so big.  I'm sure it can be a lot better.
 
+(BTW, this is more informative if BB_FEATURE_NFSMOUNT is turned off...)
+
 
 -----------------------
 
diff --git a/coreutils/logname.c b/coreutils/logname.c
index 182f40ed2..bde1752ba 100644
--- a/coreutils/logname.c
+++ b/coreutils/logname.c
@@ -29,16 +29,16 @@ static const char logname_usage[] = "logname\n\n"
 
 extern int logname_main(int argc, char **argv)
 {
-	char *cp;
+	char *user = xmalloc(9);
 
 	if (argc > 1)
 		usage(logname_usage);
 
-	cp = getlogin();
-	if (cp) {
-		puts(cp);
+	my_getpwuid(user, geteuid());
+	if (user) {
+		puts(user);
 		exit(TRUE);
 	}
-	fprintf(stderr, "%s: no login name\n", argv[0]);
+	fprintf(stderr, "no login name\n");
 	exit(FALSE);
 }
diff --git a/logname.c b/logname.c
index 182f40ed2..bde1752ba 100644
--- a/logname.c
+++ b/logname.c
@@ -29,16 +29,16 @@ static const char logname_usage[] = "logname\n\n"
 
 extern int logname_main(int argc, char **argv)
 {
-	char *cp;
+	char *user = xmalloc(9);
 
 	if (argc > 1)
 		usage(logname_usage);
 
-	cp = getlogin();
-	if (cp) {
-		puts(cp);
+	my_getpwuid(user, geteuid());
+	if (user) {
+		puts(user);
 		exit(TRUE);
 	}
-	fprintf(stderr, "%s: no login name\n", argv[0]);
+	fprintf(stderr, "no login name\n");
 	exit(FALSE);
 }
-- 
cgit v1.2.3