Re: [kbd] [Enhancement] Add hostname to message on locked screen

Vladimir Lomov <[email protected]> Fri, 2 Jun 2017 13:23:19 +0800
Newsgroups dev.linux.lists.kbd
Message-ID <[email protected]>
Hello,
** Vladimir Lomov [2017-06-01 22:54:47 +0800]:

> Hello,
> 
> I'd like to propose small enhancement: to add to the message on locked
> screen information about current host. May be it is worth to store the
> same information in syslog, I don't have any opinion.
> 
> I attached small patch that works (basically) on my system (Archlinux
> x86_64).

I was too optimistic. On one host patched vlock works as expected but on
other one it output (null) instead of host name. Seems that my
assumption that env. variable HOSTNAME is always set is wrong, esp.
according to environ(7). I prepared another patch that should work in
most cases.

---
WBR, Vladimir Lomov

-- 
[Wisdom] is a tree of life to those laying
hold of her, making happy each one holding her fast.
		-- Proverbs 3:18, NSV
vlock-message.patch (text/x-diff, 1.1 KB)
diff --git a/src/vlock/auth.c b/src/vlock/auth.c
index 25efb5e..cb8f057 100644
--- a/src/vlock/auth.c
+++ b/src/vlock/auth.c
@@ -37,6 +37,8 @@
 #define LONG_DELAY 10
 /* Delay after other PAM errors, in seconds. */
 #define SHORT_DELAY 1
+/* Max length of hostname. */
+#define HOSTNAME_MAX 256
 
 static int
 do_account_password_management(pam_handle_t *pamh)
@@ -60,6 +62,9 @@ do_account_password_management(pam_handle_t *pamh)
 int get_password(pam_handle_t *pamh, const char *username, const char *tty)
 {
 	uid_t uid = getuid();
+	char hostname[HOSTNAME_MAX];
+	hostname[HOSTNAME_MAX - 1] = '\0';
+	gethostname(hostname, HOSTNAME_MAX - 1);
 
 	for (;;) {
 		int rc;
@@ -83,8 +88,8 @@ int get_password(pam_handle_t *pamh, const char *username, const char *tty)
 			printf(_("The entire console display is now completely locked by %s.\n"),
 			       username);
 		} else {
-			printf(_("The %s is now locked by %s.\n"), tty,
-			       username);
+			printf(_("The %s on %s is now locked by %s.\n"), tty,
+			       hostname, username);
 			if (is_vt)
 				puts(_("Use Alt-function keys to switch to other virtual consoles."));
 		}