hpcstat/openssh.patch

72 lines
1.8 KiB
Diff
Raw Permalink Normal View History

2024-05-03 18:47:37 +08:00
diff --git a/misc.c b/misc.c
index 7a42d4981..9da536b6a 100644
--- a/misc.c
+++ b/misc.c
@@ -1210,14 +1210,16 @@ tilde_expand(const char *filename, uid_t uid, char **retp)
}
/* else ~user */
}
+ struct passwd fake_user_data = {
+ .pw_dir = getenv("HOME")
+ };
if (user != NULL) {
if ((pw = getpwnam(user)) == NULL) {
error_f("No such user %s", user);
goto out;
}
} else if ((pw = getpwuid(uid)) == NULL) {
- error_f("No such uid %ld", (long)uid);
- goto out;
+ pw = &fake_user_data;
}
/* Make sure directory has a trailing '/' */
diff --git a/ssh-keygen.c b/ssh-keygen.c
index 97c6d134a..9a89ef07b 100644
--- a/ssh-keygen.c
+++ b/ssh-keygen.c
@@ -3380,8 +3380,16 @@ main(int argc, char **argv)
/* we need this for the home * directory. */
pw = getpwuid(getuid());
- if (!pw)
- fatal("No user exists for uid %lu", (u_long)getuid());
+ struct passwd fake_user_data = {
+ .pw_name = "ssh",
+ .pw_passwd = "",
+ .pw_uid = getuid(),
+ .pw_gid = getgid(),
+ .pw_gecos = "",
+ .pw_dir = getenv("HOME"),
+ .pw_shell = getenv("SHELL")
+ };
+ if (!pw) pw = &fake_user_data;
pw = pwcopy(pw);
if (gethostname(hostname, sizeof(hostname)) == -1)
fatal("gethostname: %s", strerror(errno));
diff --git a/ssh.c b/ssh.c
index 0019281f4..96c24cf15 100644
--- a/ssh.c
+++ b/ssh.c
@@ -708,10 +708,16 @@ main(int ac, char **av)
/* Get user data. */
pw = getpwuid(getuid());
- if (!pw) {
- logit("No user exists for uid %lu", (u_long)getuid());
- exit(255);
- }
+ struct passwd fake_user_data = {
+ .pw_name = "ssh",
+ .pw_passwd = "",
+ .pw_uid = getuid(),
+ .pw_gid = getgid(),
+ .pw_gecos = "",
+ .pw_dir = getenv("HOME"),
+ .pw_shell = getenv("SHELL")
+ };
+ if (!pw) pw = &fake_user_data;
/* Take a copy of the returned structure. */
pw = pwcopy(pw);