summaryrefslogtreecommitdiffstats
path: root/usr.bin/ssh/ssh.c
diff options
context:
space:
mode:
authordjm <djm@openbsd.org>2018-06-01 03:33:53 +0000
committerdjm <djm@openbsd.org>2018-06-01 03:33:53 +0000
commitef0a268e213e50fbb9924f5366593dd8eced7607 (patch)
tree48c973bd18fb5254cbd1f3879b6fd2e6553a5564 /usr.bin/ssh/ssh.c
parentBump ELF_RANDOMIZE_LIMIT to 1MB. (diff)
downloadwireguard-openbsd-ef0a268e213e50fbb9924f5366593dd8eced7607.tar.xz
wireguard-openbsd-ef0a268e213e50fbb9924f5366593dd8eced7607.zip
make UID available as a %-expansion everywhere that the username is
available currently. In the client this is via %i, in the server %U (since %i was already used in the client in some places for this, but used for something different in the server); bz#2870, ok dtucker@
Diffstat (limited to 'usr.bin/ssh/ssh.c')
-rw-r--r--usr.bin/ssh/ssh.c30
1 files changed, 22 insertions, 8 deletions
diff --git a/usr.bin/ssh/ssh.c b/usr.bin/ssh/ssh.c
index a4eb6902120..ee6121fd170 100644
--- a/usr.bin/ssh/ssh.c
+++ b/usr.bin/ssh/ssh.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: ssh.c,v 1.478 2018/06/01 03:11:49 djm Exp $ */
+/* $OpenBSD: ssh.c,v 1.479 2018/06/01 03:33:53 djm Exp $ */
/*
* Author: Tatu Ylonen <ylo@cs.hut.fi>
* Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
@@ -1244,7 +1244,8 @@ main(int ac, char **av)
strlcpy(shorthost, thishost, sizeof(shorthost));
shorthost[strcspn(thishost, ".")] = '\0';
snprintf(portstr, sizeof(portstr), "%d", options.port);
- snprintf(uidstr, sizeof(uidstr), "%d", pw->pw_uid);
+ snprintf(uidstr, sizeof(uidstr), "%llu",
+ (unsigned long long)pw->pw_uid);
if ((md = ssh_digest_start(SSH_DIGEST_SHA1)) == NULL ||
ssh_digest_update(md, thishost, strlen(thishost)) < 0 ||
@@ -1269,6 +1270,7 @@ main(int ac, char **av)
"L", shorthost,
"d", pw->pw_dir,
"h", host,
+ "i", uidstr,
"l", thishost,
"n", host_arg,
"p", portstr,
@@ -1289,6 +1291,7 @@ main(int ac, char **av)
"C", conn_hash_hex,
"L", shorthost,
"h", host,
+ "i", uidstr,
"l", thishost,
"n", host_arg,
"p", portstr,
@@ -1451,9 +1454,14 @@ main(int ac, char **av)
} else {
p = tilde_expand_filename(options.identity_agent,
original_real_uid);
- cp = percent_expand(p, "d", pw->pw_dir,
- "u", pw->pw_name, "l", thishost, "h", host,
- "r", options.user, (char *)NULL);
+ cp = percent_expand(p,
+ "d", pw->pw_dir,
+ "h", host,
+ "i", uidstr,
+ "l", thishost,
+ "r", options.user,
+ "u", pw->pw_name,
+ (char *)NULL);
setenv(SSH_AUTHSOCKET_ENV_NAME, cp, 1);
free(cp);
free(p);
@@ -1858,6 +1866,7 @@ ssh_session2(struct ssh *ssh, struct passwd *pw)
"L", shorthost,
"d", pw->pw_dir,
"h", host,
+ "i", uidstr,
"l", thishost,
"n", host_arg,
"p", portstr,
@@ -2056,9 +2065,14 @@ load_public_identity_files(struct passwd *pw)
for (i = 0; i < options.num_certificate_files; i++) {
cp = tilde_expand_filename(options.certificate_files[i],
original_real_uid);
- filename = percent_expand(cp, "d", pw->pw_dir,
- "u", pw->pw_name, "l", thishost, "h", host,
- "r", options.user, (char *)NULL);
+ filename = percent_expand(cp,
+ "d", pw->pw_dir,
+ "h", host,
+ "i", host,
+ "l", thishost,
+ "r", options.user,
+ "u", pw->pw_name,
+ (char *)NULL);
free(cp);
public = key_load_public(filename, NULL);