1 |
vapier 08/06/16 21:06:47 |
2 |
|
3 |
Added: 230_all_MAX_ARG.patch |
4 |
Log: |
5 |
fix building when ARG_MAX is missing #225341 |
6 |
|
7 |
Revision Changes Path |
8 |
1.1 src/patchsets/netkit-rsh/230_all_MAX_ARG.patch |
9 |
|
10 |
file : http://sources.gentoo.org/viewcvs.py/gentoo/src/patchsets/netkit-rsh/230_all_MAX_ARG.patch?rev=1.1&view=markup |
11 |
plain: http://sources.gentoo.org/viewcvs.py/gentoo/src/patchsets/netkit-rsh/230_all_MAX_ARG.patch?rev=1.1&content-type=text/plain |
12 |
|
13 |
Index: 230_all_MAX_ARG.patch |
14 |
=================================================================== |
15 |
fix building when ARG_MAX is not defined |
16 |
|
17 |
patch by Tom-Steve Watzke |
18 |
|
19 |
http://bugs.gentoo.org/225341 |
20 |
|
21 |
--- netkit-rsh-0.17/rexecd/rexecd.c |
22 |
+++ netkit-rsh-0.17/rexecd/rexecd.c |
23 |
@@ -234,7 +234,8 @@ |
24 |
static void |
25 |
doit(struct sockaddr_in *fromp) |
26 |
{ |
27 |
- char cmdbuf[ARG_MAX+1]; |
28 |
+ char *cmdbuf; |
29 |
+ int cmdbuflen; |
30 |
char user[16], pass[16]; |
31 |
struct passwd *pwd; |
32 |
int s = -1; |
33 |
@@ -253,6 +254,15 @@ |
34 |
#endif |
35 |
#endif /* USE_PAM */ |
36 |
|
37 |
+ cmdbuflen = sysconf(_SC_ARG_MAX); |
38 |
+ if (cmdbuflen < _POSIX_ARG_MAX) |
39 |
+ cmdbuflen = _POSIX_ARG_MAX; |
40 |
+ cmdbuf = malloc(cmdbuflen); |
41 |
+ if (cmdbuf == NULL) { |
42 |
+ syslog(LOG_ERR, "unable to malloc(%i) for command buffer: %s", cmdbuflen, strerror(errno)); |
43 |
+ fatal("out of memory\n"); |
44 |
+ } |
45 |
+ |
46 |
signal(SIGINT, SIG_DFL); |
47 |
signal(SIGQUIT, SIG_DFL); |
48 |
signal(SIGTERM, SIG_DFL); |
49 |
@@ -302,7 +312,7 @@ |
50 |
|
51 |
getstr(user, sizeof(user), "username too long\n"); |
52 |
getstr(pass, sizeof(pass), "password too long\n"); |
53 |
- getstr(cmdbuf, sizeof(cmdbuf), "command too long\n"); |
54 |
+ getstr(cmdbuf, cmdbuflen, "command too long\n"); |
55 |
#ifdef USE_PAM |
56 |
#define PAM_BAIL if (pam_error != PAM_SUCCESS) { \ |
57 |
pam_end(pamh, pam_error); exit(1); \ |
58 |
--- netkit-rsh-0.17/rshd/rshd.c |
59 |
+++ netkit-rsh-0.17/rshd/rshd.c |
60 |
@@ -337,7 +337,8 @@ |
61 |
static void |
62 |
doit(struct sockaddr_in *fromp) |
63 |
{ |
64 |
- char cmdbuf[ARG_MAX+1]; |
65 |
+ char *cmdbuf; |
66 |
+ int cmdbuflen; |
67 |
const char *theshell, *shellname; |
68 |
char locuser[16], remuser[16]; |
69 |
struct passwd *pwd; |
70 |
@@ -346,6 +347,15 @@ |
71 |
u_short port; |
72 |
int pv[2], pid, ifd; |
73 |
|
74 |
+ cmdbuflen = sysconf(_SC_ARG_MAX); |
75 |
+ if (cmdbuflen < _POSIX_ARG_MAX) |
76 |
+ cmdbuflen = _POSIX_ARG_MAX; |
77 |
+ cmdbuf = malloc(cmdbuflen); |
78 |
+ if (cmdbuf == NULL) { |
79 |
+ syslog(LOG_ERR, "unable to malloc(%i) for command buffer: %s", cmdbuflen, strerror(errno)); |
80 |
+ exit(1); |
81 |
+ } |
82 |
+ |
83 |
signal(SIGINT, SIG_DFL); |
84 |
signal(SIGQUIT, SIG_DFL); |
85 |
signal(SIGTERM, SIG_DFL); |
86 |
@@ -382,7 +392,7 @@ |
87 |
|
88 |
getstr(remuser, sizeof(remuser), "remuser"); |
89 |
getstr(locuser, sizeof(locuser), "locuser"); |
90 |
- getstr(cmdbuf, sizeof(cmdbuf), "command"); |
91 |
+ getstr(cmdbuf, cmdbuflen, "command"); |
92 |
if (!strcmp(locuser, "root")) paranoid = 1; |
93 |
|
94 |
hostname = findhostname(fromp, remuser, locuser, cmdbuf); |
95 |
|
96 |
|
97 |
|
98 |
-- |
99 |
gentoo-commits@l.g.o mailing list |