diff options
author | Colin Watson <cjwatson@debian.org> | 2019-06-05 06:41:44 +0100 |
---|---|---|
committer | Colin Watson <cjwatson@debian.org> | 2019-06-09 22:09:07 +0100 |
commit | 865a97e05b6aab1619e1c8eeb33ccb8f9a9e48d3 (patch) | |
tree | 7bb2128eb663180bacfabca88f26d26bf0733824 /debian/patches/selinux-role.patch | |
parent | ba627ba172d6649919baedff5ba2789610da382a (diff) | |
parent | 7d50f9e5be88179325983a1f58c9d51bb58f025a (diff) |
New upstream release (8.0p1)
Diffstat (limited to 'debian/patches/selinux-role.patch')
-rw-r--r-- | debian/patches/selinux-role.patch | 98 |
1 files changed, 49 insertions, 49 deletions
diff --git a/debian/patches/selinux-role.patch b/debian/patches/selinux-role.patch index 269a87c76..5ab339ac9 100644 --- a/debian/patches/selinux-role.patch +++ b/debian/patches/selinux-role.patch | |||
@@ -1,4 +1,4 @@ | |||
1 | From cf3f6ac19812e4d32874304b3854b055831c2124 Mon Sep 17 00:00:00 2001 | 1 | From 21e3ff3ab4791d3c94bd775da66cde29797fcb36 Mon Sep 17 00:00:00 2001 |
2 | From: Manoj Srivastava <srivasta@debian.org> | 2 | From: Manoj Srivastava <srivasta@debian.org> |
3 | Date: Sun, 9 Feb 2014 16:09:49 +0000 | 3 | Date: Sun, 9 Feb 2014 16:09:49 +0000 |
4 | Subject: Handle SELinux authorisation roles | 4 | Subject: Handle SELinux authorisation roles |
@@ -9,7 +9,7 @@ SELinux maintainer, so we'll keep it until we have something better. | |||
9 | 9 | ||
10 | Bug: https://bugzilla.mindrot.org/show_bug.cgi?id=1641 | 10 | Bug: https://bugzilla.mindrot.org/show_bug.cgi?id=1641 |
11 | Bug-Debian: http://bugs.debian.org/394795 | 11 | Bug-Debian: http://bugs.debian.org/394795 |
12 | Last-Update: 2018-08-24 | 12 | Last-Update: 2019-06-05 |
13 | 13 | ||
14 | Patch-Name: selinux-role.patch | 14 | Patch-Name: selinux-role.patch |
15 | --- | 15 | --- |
@@ -31,7 +31,7 @@ Patch-Name: selinux-role.patch | |||
31 | 15 files changed, 99 insertions(+), 32 deletions(-) | 31 | 15 files changed, 99 insertions(+), 32 deletions(-) |
32 | 32 | ||
33 | diff --git a/auth.h b/auth.h | 33 | diff --git a/auth.h b/auth.h |
34 | index 977562f0a..90802a5eb 100644 | 34 | index bf393e755..8f13bdf48 100644 |
35 | --- a/auth.h | 35 | --- a/auth.h |
36 | +++ b/auth.h | 36 | +++ b/auth.h |
37 | @@ -65,6 +65,7 @@ struct Authctxt { | 37 | @@ -65,6 +65,7 @@ struct Authctxt { |
@@ -43,19 +43,19 @@ index 977562f0a..90802a5eb 100644 | |||
43 | /* Method lists for multiple authentication */ | 43 | /* Method lists for multiple authentication */ |
44 | char **auth_methods; /* modified from server config */ | 44 | char **auth_methods; /* modified from server config */ |
45 | diff --git a/auth2.c b/auth2.c | 45 | diff --git a/auth2.c b/auth2.c |
46 | index a77742819..3035926ba 100644 | 46 | index 7417eafa4..d60e7f1f2 100644 |
47 | --- a/auth2.c | 47 | --- a/auth2.c |
48 | +++ b/auth2.c | 48 | +++ b/auth2.c |
49 | @@ -257,7 +257,7 @@ input_userauth_request(int type, u_int32_t seq, struct ssh *ssh) | 49 | @@ -267,7 +267,7 @@ input_userauth_request(int type, u_int32_t seq, struct ssh *ssh) |
50 | { | 50 | { |
51 | Authctxt *authctxt = ssh->authctxt; | 51 | Authctxt *authctxt = ssh->authctxt; |
52 | Authmethod *m = NULL; | 52 | Authmethod *m = NULL; |
53 | - char *user, *service, *method, *style = NULL; | 53 | - char *user = NULL, *service = NULL, *method = NULL, *style = NULL; |
54 | + char *user, *service, *method, *style = NULL, *role = NULL; | 54 | + char *user = NULL, *service = NULL, *method = NULL, *style = NULL, *role = NULL; |
55 | int authenticated = 0; | 55 | int r, authenticated = 0; |
56 | double tstart = monotime_double(); | 56 | double tstart = monotime_double(); |
57 | 57 | ||
58 | @@ -270,8 +270,13 @@ input_userauth_request(int type, u_int32_t seq, struct ssh *ssh) | 58 | @@ -281,8 +281,13 @@ input_userauth_request(int type, u_int32_t seq, struct ssh *ssh) |
59 | debug("userauth-request for user %s service %s method %s", user, service, method); | 59 | debug("userauth-request for user %s service %s method %s", user, service, method); |
60 | debug("attempt %d failures %d", authctxt->attempt, authctxt->failures); | 60 | debug("attempt %d failures %d", authctxt->attempt, authctxt->failures); |
61 | 61 | ||
@@ -69,7 +69,7 @@ index a77742819..3035926ba 100644 | |||
69 | 69 | ||
70 | if (authctxt->attempt++ == 0) { | 70 | if (authctxt->attempt++ == 0) { |
71 | /* setup auth context */ | 71 | /* setup auth context */ |
72 | @@ -298,8 +303,9 @@ input_userauth_request(int type, u_int32_t seq, struct ssh *ssh) | 72 | @@ -309,8 +314,9 @@ input_userauth_request(int type, u_int32_t seq, struct ssh *ssh) |
73 | use_privsep ? " [net]" : ""); | 73 | use_privsep ? " [net]" : ""); |
74 | authctxt->service = xstrdup(service); | 74 | authctxt->service = xstrdup(service); |
75 | authctxt->style = style ? xstrdup(style) : NULL; | 75 | authctxt->style = style ? xstrdup(style) : NULL; |
@@ -77,22 +77,22 @@ index a77742819..3035926ba 100644 | |||
77 | if (use_privsep) | 77 | if (use_privsep) |
78 | - mm_inform_authserv(service, style); | 78 | - mm_inform_authserv(service, style); |
79 | + mm_inform_authserv(service, style, role); | 79 | + mm_inform_authserv(service, style, role); |
80 | userauth_banner(); | 80 | userauth_banner(ssh); |
81 | if (auth2_setup_methods_lists(authctxt) != 0) | 81 | if (auth2_setup_methods_lists(authctxt) != 0) |
82 | packet_disconnect("no authentication methods enabled"); | 82 | ssh_packet_disconnect(ssh, |
83 | diff --git a/monitor.c b/monitor.c | 83 | diff --git a/monitor.c b/monitor.c |
84 | index eabc1e89b..08fddabd7 100644 | 84 | index 0766d6ef5..5f84e880d 100644 |
85 | --- a/monitor.c | 85 | --- a/monitor.c |
86 | +++ b/monitor.c | 86 | +++ b/monitor.c |
87 | @@ -117,6 +117,7 @@ int mm_answer_sign(int, struct sshbuf *); | 87 | @@ -117,6 +117,7 @@ int mm_answer_sign(struct ssh *, int, struct sshbuf *); |
88 | int mm_answer_pwnamallow(int, struct sshbuf *); | 88 | int mm_answer_pwnamallow(struct ssh *, int, struct sshbuf *); |
89 | int mm_answer_auth2_read_banner(int, struct sshbuf *); | 89 | int mm_answer_auth2_read_banner(struct ssh *, int, struct sshbuf *); |
90 | int mm_answer_authserv(int, struct sshbuf *); | 90 | int mm_answer_authserv(struct ssh *, int, struct sshbuf *); |
91 | +int mm_answer_authrole(int, struct sshbuf *); | 91 | +int mm_answer_authrole(struct ssh *, int, struct sshbuf *); |
92 | int mm_answer_authpassword(int, struct sshbuf *); | 92 | int mm_answer_authpassword(struct ssh *, int, struct sshbuf *); |
93 | int mm_answer_bsdauthquery(int, struct sshbuf *); | 93 | int mm_answer_bsdauthquery(struct ssh *, int, struct sshbuf *); |
94 | int mm_answer_bsdauthrespond(int, struct sshbuf *); | 94 | int mm_answer_bsdauthrespond(struct ssh *, int, struct sshbuf *); |
95 | @@ -193,6 +194,7 @@ struct mon_table mon_dispatch_proto20[] = { | 95 | @@ -197,6 +198,7 @@ struct mon_table mon_dispatch_proto20[] = { |
96 | {MONITOR_REQ_SIGN, MON_ONCE, mm_answer_sign}, | 96 | {MONITOR_REQ_SIGN, MON_ONCE, mm_answer_sign}, |
97 | {MONITOR_REQ_PWNAM, MON_ONCE, mm_answer_pwnamallow}, | 97 | {MONITOR_REQ_PWNAM, MON_ONCE, mm_answer_pwnamallow}, |
98 | {MONITOR_REQ_AUTHSERV, MON_ONCE, mm_answer_authserv}, | 98 | {MONITOR_REQ_AUTHSERV, MON_ONCE, mm_answer_authserv}, |
@@ -100,7 +100,7 @@ index eabc1e89b..08fddabd7 100644 | |||
100 | {MONITOR_REQ_AUTH2_READ_BANNER, MON_ONCE, mm_answer_auth2_read_banner}, | 100 | {MONITOR_REQ_AUTH2_READ_BANNER, MON_ONCE, mm_answer_auth2_read_banner}, |
101 | {MONITOR_REQ_AUTHPASSWORD, MON_AUTH, mm_answer_authpassword}, | 101 | {MONITOR_REQ_AUTHPASSWORD, MON_AUTH, mm_answer_authpassword}, |
102 | #ifdef USE_PAM | 102 | #ifdef USE_PAM |
103 | @@ -817,6 +819,7 @@ mm_answer_pwnamallow(int sock, struct sshbuf *m) | 103 | @@ -819,6 +821,7 @@ mm_answer_pwnamallow(struct ssh *ssh, int sock, struct sshbuf *m) |
104 | 104 | ||
105 | /* Allow service/style information on the auth context */ | 105 | /* Allow service/style information on the auth context */ |
106 | monitor_permit(mon_dispatch, MONITOR_REQ_AUTHSERV, 1); | 106 | monitor_permit(mon_dispatch, MONITOR_REQ_AUTHSERV, 1); |
@@ -108,7 +108,7 @@ index eabc1e89b..08fddabd7 100644 | |||
108 | monitor_permit(mon_dispatch, MONITOR_REQ_AUTH2_READ_BANNER, 1); | 108 | monitor_permit(mon_dispatch, MONITOR_REQ_AUTH2_READ_BANNER, 1); |
109 | 109 | ||
110 | #ifdef USE_PAM | 110 | #ifdef USE_PAM |
111 | @@ -850,16 +853,42 @@ mm_answer_authserv(int sock, struct sshbuf *m) | 111 | @@ -852,16 +855,42 @@ mm_answer_authserv(struct ssh *ssh, int sock, struct sshbuf *m) |
112 | monitor_permit_authentications(1); | 112 | monitor_permit_authentications(1); |
113 | 113 | ||
114 | if ((r = sshbuf_get_cstring(m, &authctxt->service, NULL)) != 0 || | 114 | if ((r = sshbuf_get_cstring(m, &authctxt->service, NULL)) != 0 || |
@@ -135,7 +135,7 @@ index eabc1e89b..08fddabd7 100644 | |||
135 | +} | 135 | +} |
136 | + | 136 | + |
137 | +int | 137 | +int |
138 | +mm_answer_authrole(int sock, struct sshbuf *m) | 138 | +mm_answer_authrole(struct ssh *ssh, int sock, struct sshbuf *m) |
139 | +{ | 139 | +{ |
140 | + int r; | 140 | + int r; |
141 | + | 141 | + |
@@ -154,7 +154,7 @@ index eabc1e89b..08fddabd7 100644 | |||
154 | return (0); | 154 | return (0); |
155 | } | 155 | } |
156 | 156 | ||
157 | @@ -1501,7 +1530,7 @@ mm_answer_pty(int sock, struct sshbuf *m) | 157 | @@ -1528,7 +1557,7 @@ mm_answer_pty(struct ssh *ssh, int sock, struct sshbuf *m) |
158 | res = pty_allocate(&s->ptyfd, &s->ttyfd, s->tty, sizeof(s->tty)); | 158 | res = pty_allocate(&s->ptyfd, &s->ttyfd, s->tty, sizeof(s->tty)); |
159 | if (res == 0) | 159 | if (res == 0) |
160 | goto error; | 160 | goto error; |
@@ -164,23 +164,23 @@ index eabc1e89b..08fddabd7 100644 | |||
164 | if ((r = sshbuf_put_u32(m, 1)) != 0 || | 164 | if ((r = sshbuf_put_u32(m, 1)) != 0 || |
165 | (r = sshbuf_put_cstring(m, s->tty)) != 0) | 165 | (r = sshbuf_put_cstring(m, s->tty)) != 0) |
166 | diff --git a/monitor.h b/monitor.h | 166 | diff --git a/monitor.h b/monitor.h |
167 | index 44fbed589..8f65e684d 100644 | 167 | index 2b1a2d590..4d87284aa 100644 |
168 | --- a/monitor.h | 168 | --- a/monitor.h |
169 | +++ b/monitor.h | 169 | +++ b/monitor.h |
170 | @@ -66,6 +66,8 @@ enum monitor_reqtype { | 170 | @@ -65,6 +65,8 @@ enum monitor_reqtype { |
171 | |||
171 | MONITOR_REQ_GSSSIGN = 150, MONITOR_ANS_GSSSIGN = 151, | 172 | MONITOR_REQ_GSSSIGN = 150, MONITOR_ANS_GSSSIGN = 151, |
172 | MONITOR_REQ_GSSUPCREDS = 152, MONITOR_ANS_GSSUPCREDS = 153, | 173 | MONITOR_REQ_GSSUPCREDS = 152, MONITOR_ANS_GSSUPCREDS = 153, |
173 | |||
174 | + MONITOR_REQ_AUTHROLE = 154, | ||
175 | + | 174 | + |
175 | + MONITOR_REQ_AUTHROLE = 154, | ||
176 | }; | 176 | }; |
177 | 177 | ||
178 | struct monitor { | 178 | struct ssh; |
179 | diff --git a/monitor_wrap.c b/monitor_wrap.c | 179 | diff --git a/monitor_wrap.c b/monitor_wrap.c |
180 | index 1865a122a..fd4d7eb3b 100644 | 180 | index 8e4c1c1f8..6b3a6251c 100644 |
181 | --- a/monitor_wrap.c | 181 | --- a/monitor_wrap.c |
182 | +++ b/monitor_wrap.c | 182 | +++ b/monitor_wrap.c |
183 | @@ -369,10 +369,10 @@ mm_auth2_read_banner(void) | 183 | @@ -364,10 +364,10 @@ mm_auth2_read_banner(void) |
184 | return (banner); | 184 | return (banner); |
185 | } | 185 | } |
186 | 186 | ||
@@ -193,7 +193,7 @@ index 1865a122a..fd4d7eb3b 100644 | |||
193 | { | 193 | { |
194 | struct sshbuf *m; | 194 | struct sshbuf *m; |
195 | int r; | 195 | int r; |
196 | @@ -382,7 +382,8 @@ mm_inform_authserv(char *service, char *style) | 196 | @@ -377,7 +377,8 @@ mm_inform_authserv(char *service, char *style) |
197 | if ((m = sshbuf_new()) == NULL) | 197 | if ((m = sshbuf_new()) == NULL) |
198 | fatal("%s: sshbuf_new failed", __func__); | 198 | fatal("%s: sshbuf_new failed", __func__); |
199 | if ((r = sshbuf_put_cstring(m, service)) != 0 || | 199 | if ((r = sshbuf_put_cstring(m, service)) != 0 || |
@@ -203,7 +203,7 @@ index 1865a122a..fd4d7eb3b 100644 | |||
203 | fatal("%s: buffer error: %s", __func__, ssh_err(r)); | 203 | fatal("%s: buffer error: %s", __func__, ssh_err(r)); |
204 | 204 | ||
205 | mm_request_send(pmonitor->m_recvfd, MONITOR_REQ_AUTHSERV, m); | 205 | mm_request_send(pmonitor->m_recvfd, MONITOR_REQ_AUTHSERV, m); |
206 | @@ -390,6 +391,26 @@ mm_inform_authserv(char *service, char *style) | 206 | @@ -385,6 +386,26 @@ mm_inform_authserv(char *service, char *style) |
207 | sshbuf_free(m); | 207 | sshbuf_free(m); |
208 | } | 208 | } |
209 | 209 | ||
@@ -231,17 +231,17 @@ index 1865a122a..fd4d7eb3b 100644 | |||
231 | int | 231 | int |
232 | mm_auth_password(struct ssh *ssh, char *password) | 232 | mm_auth_password(struct ssh *ssh, char *password) |
233 | diff --git a/monitor_wrap.h b/monitor_wrap.h | 233 | diff --git a/monitor_wrap.h b/monitor_wrap.h |
234 | index 7f93144ff..79e78cc90 100644 | 234 | index 69164a8c0..3d0e32d48 100644 |
235 | --- a/monitor_wrap.h | 235 | --- a/monitor_wrap.h |
236 | +++ b/monitor_wrap.h | 236 | +++ b/monitor_wrap.h |
237 | @@ -43,7 +43,8 @@ int mm_is_monitor(void); | 237 | @@ -44,7 +44,8 @@ int mm_is_monitor(void); |
238 | DH *mm_choose_dh(int, int, int); | 238 | DH *mm_choose_dh(int, int, int); |
239 | int mm_sshkey_sign(struct sshkey *, u_char **, size_t *, const u_char *, size_t, | 239 | int mm_sshkey_sign(struct ssh *, struct sshkey *, u_char **, size_t *, |
240 | const char *, u_int compat); | 240 | const u_char *, size_t, const char *, u_int compat); |
241 | -void mm_inform_authserv(char *, char *); | 241 | -void mm_inform_authserv(char *, char *); |
242 | +void mm_inform_authserv(char *, char *, char *); | 242 | +void mm_inform_authserv(char *, char *, char *); |
243 | +void mm_inform_authrole(char *); | 243 | +void mm_inform_authrole(char *); |
244 | struct passwd *mm_getpwnamallow(const char *); | 244 | struct passwd *mm_getpwnamallow(struct ssh *, const char *); |
245 | char *mm_auth2_read_banner(void); | 245 | char *mm_auth2_read_banner(void); |
246 | int mm_auth_password(struct ssh *, char *); | 246 | int mm_auth_password(struct ssh *, char *); |
247 | diff --git a/openbsd-compat/port-linux.c b/openbsd-compat/port-linux.c | 247 | diff --git a/openbsd-compat/port-linux.c b/openbsd-compat/port-linux.c |
@@ -363,10 +363,10 @@ index ea4f9c584..60d72ffe7 100644 | |||
363 | char *platform_krb5_get_principal_name(const char *); | 363 | char *platform_krb5_get_principal_name(const char *); |
364 | int platform_sys_dir_uid(uid_t); | 364 | int platform_sys_dir_uid(uid_t); |
365 | diff --git a/session.c b/session.c | 365 | diff --git a/session.c b/session.c |
366 | index 2d0958d11..19f38637e 100644 | 366 | index ac3d9d19d..d87ea4d44 100644 |
367 | --- a/session.c | 367 | --- a/session.c |
368 | +++ b/session.c | 368 | +++ b/session.c |
369 | @@ -1380,7 +1380,7 @@ safely_chroot(const char *path, uid_t uid) | 369 | @@ -1356,7 +1356,7 @@ safely_chroot(const char *path, uid_t uid) |
370 | 370 | ||
371 | /* Set login name, uid, gid, and groups. */ | 371 | /* Set login name, uid, gid, and groups. */ |
372 | void | 372 | void |
@@ -375,7 +375,7 @@ index 2d0958d11..19f38637e 100644 | |||
375 | { | 375 | { |
376 | char uidstr[32], *chroot_path, *tmp; | 376 | char uidstr[32], *chroot_path, *tmp; |
377 | 377 | ||
378 | @@ -1408,7 +1408,7 @@ do_setusercontext(struct passwd *pw) | 378 | @@ -1384,7 +1384,7 @@ do_setusercontext(struct passwd *pw) |
379 | endgrent(); | 379 | endgrent(); |
380 | #endif | 380 | #endif |
381 | 381 | ||
@@ -384,7 +384,7 @@ index 2d0958d11..19f38637e 100644 | |||
384 | 384 | ||
385 | if (!in_chroot && options.chroot_directory != NULL && | 385 | if (!in_chroot && options.chroot_directory != NULL && |
386 | strcasecmp(options.chroot_directory, "none") != 0) { | 386 | strcasecmp(options.chroot_directory, "none") != 0) { |
387 | @@ -1547,7 +1547,7 @@ do_child(struct ssh *ssh, Session *s, const char *command) | 387 | @@ -1525,7 +1525,7 @@ do_child(struct ssh *ssh, Session *s, const char *command) |
388 | 388 | ||
389 | /* Force a password change */ | 389 | /* Force a password change */ |
390 | if (s->authctxt->force_pwchange) { | 390 | if (s->authctxt->force_pwchange) { |
@@ -393,7 +393,7 @@ index 2d0958d11..19f38637e 100644 | |||
393 | child_close_fds(ssh); | 393 | child_close_fds(ssh); |
394 | do_pwchange(s); | 394 | do_pwchange(s); |
395 | exit(1); | 395 | exit(1); |
396 | @@ -1565,7 +1565,7 @@ do_child(struct ssh *ssh, Session *s, const char *command) | 396 | @@ -1543,7 +1543,7 @@ do_child(struct ssh *ssh, Session *s, const char *command) |
397 | /* When PAM is enabled we rely on it to do the nologin check */ | 397 | /* When PAM is enabled we rely on it to do the nologin check */ |
398 | if (!options.use_pam) | 398 | if (!options.use_pam) |
399 | do_nologin(pw); | 399 | do_nologin(pw); |
@@ -402,8 +402,8 @@ index 2d0958d11..19f38637e 100644 | |||
402 | /* | 402 | /* |
403 | * PAM session modules in do_setusercontext may have | 403 | * PAM session modules in do_setusercontext may have |
404 | * generated messages, so if this in an interactive | 404 | * generated messages, so if this in an interactive |
405 | @@ -1955,7 +1955,7 @@ session_pty_req(struct ssh *ssh, Session *s) | 405 | @@ -1942,7 +1942,7 @@ session_pty_req(struct ssh *ssh, Session *s) |
406 | ssh_tty_parse_modes(ssh, s->ttyfd); | 406 | sshpkt_fatal(ssh, r, "%s: parse packet", __func__); |
407 | 407 | ||
408 | if (!use_privsep) | 408 | if (!use_privsep) |
409 | - pty_setowner(s->pw, s->tty); | 409 | - pty_setowner(s->pw, s->tty); |
@@ -425,10 +425,10 @@ index ce59dabd9..675c91146 100644 | |||
425 | const char *session_get_remote_name_or_ip(struct ssh *, u_int, int); | 425 | const char *session_get_remote_name_or_ip(struct ssh *, u_int, int); |
426 | 426 | ||
427 | diff --git a/sshd.c b/sshd.c | 427 | diff --git a/sshd.c b/sshd.c |
428 | index 673db87f6..2bc6679e5 100644 | 428 | index 46870d3b5..e3e96426e 100644 |
429 | --- a/sshd.c | 429 | --- a/sshd.c |
430 | +++ b/sshd.c | 430 | +++ b/sshd.c |
431 | @@ -683,7 +683,7 @@ privsep_postauth(Authctxt *authctxt) | 431 | @@ -594,7 +594,7 @@ privsep_postauth(struct ssh *ssh, Authctxt *authctxt) |
432 | reseed_prngs(); | 432 | reseed_prngs(); |
433 | 433 | ||
434 | /* Drop privileges */ | 434 | /* Drop privileges */ |