0
0
mirror of https://github.com/termux/termux-packages.git synced 2025-03-04 09:28:54 +00:00
TomIO ed5c640b46 bump(main/openssh): 9.9p1 (#21517)
regenerate `sshd.c.patch` and set a maintainer
2024-09-20 08:57:32 +02:00

88 lines
2.5 KiB
Diff

diff --git a/sshd.c b/sshd.c
index df76dc78c..c6041cfae 100644
--- a/sshd.c
+++ b/sshd.c
@@ -1215,7 +1215,8 @@ main(int ac, char **av)
saved_argc = ac;
rexec_argc = ac;
saved_argv = xcalloc(ac + 1, sizeof(*saved_argv));
- for (i = 0; (int)i < ac; i++)
+ saved_argv[0] = xstrdup("@TERMUX_PREFIX@/bin/sshd");
+ for (i = 1; (int)i < ac; i++)
saved_argv[i] = xstrdup(av[i]);
saved_argv[i] = NULL;
@@ -1224,10 +1225,10 @@ main(int ac, char **av)
compat_init_setproctitle(ac, av);
av = saved_argv;
#endif
-
+#ifndef __ANDROID__
if (geteuid() == 0 && setgroups(0, NULL) == -1)
debug("setgroups(): %.200s", strerror(errno));
-
+#endif
/* Ensure that fds 0, 1 and 2 are open or directed to /dev/null */
sanitise_stdfd();
@@ -1348,9 +1349,10 @@ main(int ac, char **av)
break;
}
}
+#ifndef __ANDROID__
if (!test_flag && !inetd_flag && !do_dump_cfg && !path_absolute(av[0]))
fatal("sshd requires execution with an absolute path");
-
+#endif
closefrom(STDERR_FILENO + 1);
/* Reserve fds we'll need later for reexec things */
@@ -1609,12 +1611,13 @@ main(int ac, char **av)
/* Ensure privsep directory is correctly configured. */
need_chroot = ((getuid() == 0 || geteuid() == 0) ||
options.kerberos_authentication);
+#ifndef __ANDROID__
if ((getpwnam(SSH_PRIVSEP_USER)) == NULL && need_chroot) {
fatal("Privilege separation user %s does not exist",
SSH_PRIVSEP_USER);
}
endpwent();
-
+#endif
if (need_chroot) {
if ((stat(_PATH_PRIVSEP_CHROOT_DIR, &sb) == -1) ||
(S_ISDIR(sb.st_mode) == 0))
@@ -1645,9 +1648,10 @@ main(int ac, char **av)
* to create a file, and we can't control the code in every
* module which might be used).
*/
+#ifndef __ANDROID__
if (setgroups(0, NULL) < 0)
debug("setgroups() failed: %.200s", strerror(errno));
-
+#endif
/* Prepare arguments for sshd-session */
if (rexec_argc < 0)
fatal("rexec_argc %d < 0", rexec_argc);
@@ -1686,7 +1690,7 @@ main(int ac, char **av)
already_daemon = daemonized();
if (!(debug_flag || inetd_flag || no_daemon_flag || already_daemon)) {
- if (daemon(0, 0) == -1)
+ if (daemon(1, 0) == -1)
fatal("daemon() failed: %.200s", strerror(errno));
disconnect_controlling_tty();
@@ -1698,9 +1702,10 @@ main(int ac, char **av)
* Chdir to the root directory so that the current disk can be
* unmounted if desired.
*/
+#ifndef __ANDROID__
if (chdir("/") == -1)
error("chdir(\"/\"): %s", strerror(errno));
-
+#endif
/* ignore SIGPIPE */
ssh_signal(SIGPIPE, SIG_IGN);