Bugzilla – Attachment 1408 Details for
Bug 1413
Add support for launching ssh-agent from Mac OS X's launchd.
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
Adds support for launching ssh-agent from Mac OS X's launchd.
DVG-4748610+4897588_ssh-agent_via_launchd.patch (text/plain), 3.16 KB, created by
Disco Vince Giffin
on 2007-12-21 15:22:20 AEDT
(
hide
)
Description:
Adds support for launching ssh-agent from Mac OS X's launchd.
Filename:
MIME Type:
Creator:
Disco Vince Giffin
Created:
2007-12-21 15:22:20 AEDT
Size:
3.16 KB
patch
obsolete
>diff -ru ../openssh-4.7p1.old/ssh-agent.c ./ssh-agent.c >--- ../openssh-4.7p1.old/ssh-agent.c 2007-03-21 02:45:07.000000000 -0700 >+++ ./ssh-agent.c 2007-10-01 01:01:39.000000000 -0700 >@@ -64,6 +64,9 @@ > #include <time.h> > #include <string.h> > #include <unistd.h> >+#ifdef __APPLE_LAUNCHD__ >+#include <launch.h> >+#endif > > #include "xmalloc.h" > #include "ssh.h" >@@ -1031,7 +1034,11 @@ > int > main(int ac, char **av) > { >+#ifdef __APPLE_LAUNCHD__ >+ int c_flag = 0, d_flag = 0, k_flag = 0, s_flag = 0, l_flag = 0; >+#else > int c_flag = 0, d_flag = 0, k_flag = 0, s_flag = 0; >+#endif > int sock, fd, ch, result, saved_errno; > u_int nalloc; > char *shell, *format, *pidstr, *agentsocket = NULL; >@@ -1065,7 +1072,11 @@ > init_rng(); > seed_rng(); > >+#ifdef __APPLE_LAUNCHD__ >+ while ((ch = getopt(ac, av, "cdklsa:t:")) != -1) { >+#else > while ((ch = getopt(ac, av, "cdksa:t:")) != -1) { >+#endif > switch (ch) { > case 'c': > if (s_flag) >@@ -1075,6 +1086,11 @@ > case 'k': > k_flag++; > break; >+#ifdef __APPLE_LAUNCHD__ >+ case 'l': >+ l_flag++; >+ break; >+#endif > case 's': > if (c_flag) > usage(); >@@ -1101,7 +1117,11 @@ > ac -= optind; > av += optind; > >+#ifdef __APPPLE_LAUNCHD__ >+ if (ac > 0 && (c_flag || k_flag || s_flag || d_flag || l_flag)) >+#else > if (ac > 0 && (c_flag || k_flag || s_flag || d_flag)) >+#endif > usage(); > > if (ac == 0 && !c_flag && !s_flag) { >@@ -1157,6 +1177,53 @@ > * Create socket early so it will exist before command gets run from > * the parent. > */ >+#ifdef __APPLE_LAUNCHD__ >+ if (l_flag) { >+ launch_data_t resp, msg, tmp; >+ size_t listeners_i; >+ >+ msg = launch_data_new_string(LAUNCH_KEY_CHECKIN); >+ >+ resp = launch_msg(msg); >+ >+ if (NULL == resp) { >+ perror("launch_msg"); >+ exit(1); >+ } >+ launch_data_free(msg); >+ switch (launch_data_get_type(resp)) { >+ case LAUNCH_DATA_ERRNO: >+ errno = launch_data_get_errno(resp); >+ perror("launch_msg response"); >+ exit(1); >+ case LAUNCH_DATA_DICTIONARY: >+ break; >+ default: >+ fprintf(stderr, "launch_msg unknown response"); >+ exit(1); >+ } >+ tmp = launch_data_dict_lookup(resp, LAUNCH_JOBKEY_SOCKETS); >+ >+ if (NULL == tmp) { >+ fprintf(stderr, "no sockets\n"); >+ exit(1); >+ } >+ >+ tmp = launch_data_dict_lookup(tmp, "Listeners"); >+ >+ if (NULL == tmp) { >+ fprintf(stderr, "no known listeners\n"); >+ exit(1); >+ } >+ >+ for (listeners_i = 0; listeners_i < launch_data_array_get_count(tmp); listeners_i++) { >+ launch_data_t obj_at_ind = launch_data_array_get_index(tmp, listeners_i); >+ new_socket(AUTH_SOCKET, launch_data_get_fd(obj_at_ind)); >+ } >+ >+ launch_data_free(resp); >+ } else { >+#endif > sock = socket(AF_UNIX, SOCK_STREAM, 0); > if (sock < 0) { > perror("socket"); >@@ -1178,6 +1245,9 @@ > perror("listen"); > cleanup_exit(1); > } >+#ifdef __APPLE_LAUNCHD__ >+ } >+#endif > > /* > * Fork, and have the parent execute the command, if any, or present >@@ -1191,6 +1261,12 @@ > printf("echo Agent pid %ld;\n", (long)parent_pid); > goto skip; > } >+ >+#ifdef __APPLE_LAUNCHD__ >+ if (l_flag) >+ goto skip2; >+#endif >+ > pid = fork(); > if (pid == -1) { > perror("fork"); >@@ -1246,6 +1322,7 @@ > > skip: > new_socket(AUTH_SOCKET, sock); >+skip2: > if (ac > 0) > parent_alive_interval = 10; > idtab_init();
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 1413
: 1408