<pre style='margin:0'>
Clemens Lang (neverpanic) pushed a commit to branch master
in repository macports-ports.
</pre>
<p><a href="https://github.com/macports/macports-ports/commit/092dd0344ed7b154d11fbffe4d3229119c6f3841">https://github.com/macports/macports-ports/commit/092dd0344ed7b154d11fbffe4d3229119c6f3841</a></p>
<pre style="white-space: pre; background: #F8F8F8">The following commit(s) were added to refs/heads/master by this push:
<span style='display:block; white-space:pre;color:#404040;'> new 092dd0344ed openssh: restore launchd support in ssh-agent
</span>092dd0344ed is described below
<span style='display:block; white-space:pre;color:#808000;'>commit 092dd0344ed7b154d11fbffe4d3229119c6f3841
</span>Author: Bill Neubauer <bill.neubauer@gmail.com>
AuthorDate: Mon Dec 21 08:27:27 2020 -0800
<span style='display:block; white-space:pre;color:#404040;'> openssh: restore launchd support in ssh-agent
</span><span style='display:block; white-space:pre;color:#404040;'>
</span><span style='display:block; white-space:pre;color:#404040;'> * update to revision 1
</span><span style='display:block; white-space:pre;color:#404040;'> * restore partial contents of previously deleted patch
</span><span style='display:block; white-space:pre;color:#404040;'>
</span><span style='display:block; white-space:pre;color:#404040;'> Closes: https://trac.macports.org/ticket/61888
</span>---
net/openssh/Portfile | 9 ++-
net/openssh/files/agent.patch | 152 ++++++++++++++++++++++++++++++++++++++++++
2 files changed, 160 insertions(+), 1 deletion(-)
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/net/openssh/Portfile b/net/openssh/Portfile
</span><span style='display:block; white-space:pre;color:#808080;'>index ae6060f9355..3072530c648 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/net/openssh/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/net/openssh/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -6,7 +6,7 @@ PortGroup compiler_blacklist_versions 1.0
</span>
name openssh
version 8.4p1
<span style='display:block; white-space:pre;background:#ffe0e0;'>-revision 0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+revision 1
</span> categories net
platforms darwin
maintainers nomaintainer
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -47,6 +47,7 @@ if {${name} eq ${subport}} {
</span> # the HPN patch needs this, so rewrite all other patches to support it, too
patch.args -p1
patchfiles launchd.patch \
<span style='display:block; white-space:pre;background:#e0ffe0;'>+ agent.patch \
</span> pam.patch \
patch-sandbox-darwin.c-apple-sandbox-named-external.diff \
patch-sshd.c-apple-sandbox-named-external.diff \
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -65,6 +66,8 @@ if {${name} eq ${subport}} {
</span> # - macports-config.patch
# Changes the default configuration from the upstream-provided one by popular
# request.
<span style='display:block; white-space:pre;background:#e0ffe0;'>+ # - agent.patch
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # Adds -l flag to ssh-agent to work with launchd.
</span>
post-patch {
# reinplace prefix in path to sandbox definition added by
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -81,6 +84,10 @@ if {${name} eq ${subport}} {
</span> # Use Apple's sandboxing feature
configure.cppflags-append -D__APPLE_SANDBOX_NAMED_EXTERNAL__ \
-D__APPLE_API_STRICT_CONFORMANCE
<span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # Support Apple's launchd in ssh-agent
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ configure.cppflags-append -D__APPLE_LAUNCHD__
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span> configure.ldflags-append -Wl,-search_paths_first
configure.args --with-ssl-dir=${prefix} \
--sysconfdir=${prefix}/etc/ssh \
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/net/openssh/files/agent.patch b/net/openssh/files/agent.patch
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..32ff7767569
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/net/openssh/files/agent.patch
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,152 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- a/ssh-agent.c 2019-10-09 02:31:03.000000000 +0200
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ b/ssh-agent.c 2019-11-02 05:54:35.000000000 +0100
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -70,6 +70,10 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include <time.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include <string.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include <unistd.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#ifdef __APPLE_LAUNCHD__
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#include <launch.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#include <AvailabilityMacros.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #ifdef HAVE_UTIL_H
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # include <util.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -1088,6 +1092,9 @@ int
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ main(int ac, char **av)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ int c_flag = 0, d_flag = 0, D_flag = 0, k_flag = 0, s_flag = 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ #ifdef __APPLE_LAUNCHD__
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ int l_flag = 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ #endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ int sock, fd, ch, result, saved_errno;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ char *shell, *format, *pidstr, *agentsocket = NULL;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #ifdef HAVE_SETRLIMIT
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -1119,7 +1126,11 @@ main(int ac, char **av)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ __progname = ssh_get_progname(av[0]);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ seed_rng();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#ifdef __APPLE_LAUNCHD__
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ while ((ch = getopt(ac, av, "cDdklsE:a:O:P:t:")) != -1) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ while ((ch = getopt(ac, av, "cDdksE:a:O:P:t:")) != -1) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ switch (ch) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ case 'E':
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ fingerprint_hash = ssh_digest_alg_by_name(optarg);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -1139,6 +1150,11 @@ main(int ac, char **av)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ fatal("-P option already specified");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ pkcs11_whitelist = xstrdup(optarg);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ break;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#ifdef __APPLE_LAUNCHD__
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ case 'l':
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ l_flag++;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ break;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ case 's':
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if (c_flag)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ usage();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -1241,6 +1257,75 @@ main(int ac, char **av)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * Create socket early so it will exist before command gets run from
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * the parent.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#ifdef __APPLE_LAUNCHD__
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ if (l_flag) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#if ((defined (MAC_OS_X_VERSION_10_11)) && (MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_11))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ int *fds = NULL;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ size_t count = 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ result = launch_activate_socket("Listeners", &fds, &count);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ if (result != 0 || fds == NULL || count < 1) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ errno = result;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ perror("launch_activate_socket()");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ exit(1);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ size_t i;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ for (i = 0; i < count; i++) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ new_socket(AUTH_SOCKET, fds[i]);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ if (fds)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ free(fds);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ goto skip2;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#else /* ((defined (MAC_OS_X_VERSION_10_11)) && (MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_11)) */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ launch_data_t resp, msg, tmp;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ size_t listeners_i;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ msg = launch_data_new_string(LAUNCH_KEY_CHECKIN);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ resp = launch_msg(msg);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ if (NULL == resp) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ perror("launch_msg");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ exit(1);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ launch_data_free(msg);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ switch (launch_data_get_type(resp)) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ case LAUNCH_DATA_ERRNO:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ errno = launch_data_get_errno(resp);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ perror("launch_msg response");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ exit(1);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ case LAUNCH_DATA_DICTIONARY:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ break;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ default:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ fprintf(stderr, "launch_msg unknown response");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ exit(1);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ tmp = launch_data_dict_lookup(resp, LAUNCH_JOBKEY_SOCKETS);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ if (NULL == tmp) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ fprintf(stderr, "no sockets\n");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ exit(1);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ tmp = launch_data_dict_lookup(tmp, "Listeners");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ if (NULL == tmp) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ fprintf(stderr, "no known listeners\n");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ exit(1);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ for (listeners_i = 0; listeners_i < launch_data_array_get_count(tmp); listeners_i++) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ launch_data_t obj_at_ind = launch_data_array_get_index(tmp, listeners_i);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ new_socket(AUTH_SOCKET, launch_data_get_fd(obj_at_ind));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ launch_data_free(resp);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif /* ((defined (MAC_OS_X_VERSION_10_11)) && (MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_11)) */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ } else {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ prev_mask = umask(0177);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ sock = unix_listener(socket_name, SSH_LISTEN_BACKLOG, 0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if (sock < 0) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -1248,7 +1333,18 @@ main(int ac, char **av)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ *socket_name = '\0'; /* Don't unlink any existing file */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ cleanup_exit(1);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ umask(prev_mask);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#ifdef __APPLE_LAUNCHD__
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#ifdef __APPLE_LAUNCHD__
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#if ((!(defined (MAC_OS_X_VERSION_10_11))) || (MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_11))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ if (l_flag)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ goto skip2;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif /* ((!(defined (MAC_OS_X_VERSION_10_11))) || (MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_11)) */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif /* defined (__APPLE_LAUNCHD__) */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ /*
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * Fork, and have the parent execute the command, if any, or present
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -1326,6 +1422,9 @@ skip:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ pkcs11_init(0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ new_socket(AUTH_SOCKET, sock);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#ifdef __APPLE_LAUNCHD__
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++skip2:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if (ac > 0)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ parent_alive_interval = 10;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ idtab_init();
</span></pre><pre style='margin:0'>
</pre>