]> git.ipfire.org Git - thirdparty/openssh-portable.git/commitdiff
platform: introduce a way to hook new session start
authorDaniil Tatianin <d-tatianin@yandex-team.ru>
Thu, 27 Feb 2025 08:46:25 +0000 (11:46 +0300)
committerDarren Tucker <dtucker@dtucker.net>
Sun, 23 Mar 2025 00:23:33 +0000 (11:23 +1100)
Previously this was possible via post_fork_child, but ever since sshd
was split into multiple binaries, this is now no longer possible becase
of execv.

Makefile.in
platform-listen.c
platform.h
sshd-session.c

index 974be207a57c0f0601836cebf61c55589c4d4072..4617cebcd5e439cbe29bda58c8444bc92b12f8fb 100644 (file)
@@ -140,7 +140,7 @@ SSHD_SESSION_OBJS=sshd-session.o auth-rhosts.o auth-passwd.o \
        auth2-gss.o gss-serv.o gss-serv-krb5.o \
        loginrec.o auth-pam.o auth-shadow.o auth-sia.o \
        sftp-server.o sftp-common.o \
-       uidswap.o $(SKOBJS)
+       uidswap.o platform-listen.o $(SKOBJS)
 
 SSHD_AUTH_OBJS=sshd-auth.o \
        auth2-methods.o \
index 42c4040f0c8133ee1278929108886a38f61db3b5..4da2855eea735285911462a2d4806c0ce6375941 100644 (file)
@@ -82,3 +82,6 @@ platform_post_fork_child(void)
 #endif
 }
 
+void platform_pre_session_start(void)
+{
+}
index 5dec23276a61fe2f0c69556818ebfecedcbc5f50..08cbd225d6a10c4509dfa20e751d39ac6b3e403c 100644 (file)
@@ -24,6 +24,7 @@ void platform_pre_restart(void);
 void platform_post_listen(void);
 void platform_post_fork_parent(pid_t child_pid);
 void platform_post_fork_child(void);
+void platform_pre_session_start(void);
 int  platform_privileged_uidswap(void);
 void platform_setusercontext(struct passwd *);
 void platform_setusercontext_post_groups(struct passwd *);
index 1e2cee10f622fb8b460c6365c6c83e9daa7dcfa2..c64eb29fcefd779fbe58428513adc4037d6ea906 100644 (file)
@@ -999,6 +999,8 @@ main(int ac, char **av)
 
        closefrom(REEXEC_MIN_FREE_FD);
 
+       platform_pre_session_start();
+
        /* Reserve fds we'll need later for reexec things */
        if ((devnull = open(_PATH_DEVNULL, O_RDWR)) == -1)
                fatal("open %s: %s", _PATH_DEVNULL, strerror(errno));