View | Details | Raw Unified | Return to bug 17878
Collapse All | Expand All

(-)kern_resource.c (-5 / +11 lines)
Lines 86-92 Link Here
86
			p = curp;
86
			p = curp;
87
		else
87
		else
88
			p = pfind(uap->who);
88
			p = pfind(uap->who);
89
		if (p == 0)
89
		if (p == 0 || !PRISON_CHECK(curp, p))
90
			break;
90
			break;
91
		low = p->p_nice;
91
		low = p->p_nice;
92
		break;
92
		break;
Lines 98-103 Link Here
98
			pg = curp->p_pgrp;
98
			pg = curp->p_pgrp;
99
		else if ((pg = pgfind(uap->who)) == NULL)
99
		else if ((pg = pgfind(uap->who)) == NULL)
100
			break;
100
			break;
101
		if (!PRISON_CHECK(curp, LIST_FIRST(&pg->pg_members)))
102
			break;
101
		LIST_FOREACH(p, &pg->pg_members, p_pglist) {
103
		LIST_FOREACH(p, &pg->pg_members, p_pglist) {
102
			if (p->p_nice < low)
104
			if (p->p_nice < low)
103
				low = p->p_nice;
105
				low = p->p_nice;
Lines 110-116 Link Here
110
			uap->who = curp->p_ucred->cr_uid;
112
			uap->who = curp->p_ucred->cr_uid;
111
		LIST_FOREACH(p, &allproc, p_list)
113
		LIST_FOREACH(p, &allproc, p_list)
112
			if (p->p_ucred->cr_uid == uap->who &&
114
			if (p->p_ucred->cr_uid == uap->who &&
113
			    p->p_nice < low)
115
			    p->p_nice < low &&
116
			    PRISON_CHECK(curp, p))
114
				low = p->p_nice;
117
				low = p->p_nice;
115
		break;
118
		break;
116
119
Lines 146-152 Link Here
146
			p = curp;
149
			p = curp;
147
		else
150
		else
148
			p = pfind(uap->who);
151
			p = pfind(uap->who);
149
		if (p == 0)
152
		if (p == 0 || !PRISON_CHECK(curp, p))
150
			break;
153
			break;
151
		error = donice(curp, p, uap->prio);
154
		error = donice(curp, p, uap->prio);
152
		found++;
155
		found++;
Lines 159-164 Link Here
159
			pg = curp->p_pgrp;
162
			pg = curp->p_pgrp;
160
		else if ((pg = pgfind(uap->who)) == NULL)
163
		else if ((pg = pgfind(uap->who)) == NULL)
161
			break;
164
			break;
165
		if (!PRISON_CHECK(curp, LIST_FIRST(&pg->pg_members)))
166
			break;
162
		LIST_FOREACH(p, &pg->pg_members, p_pglist) {
167
		LIST_FOREACH(p, &pg->pg_members, p_pglist) {
163
			error = donice(curp, p, uap->prio);
168
			error = donice(curp, p, uap->prio);
164
			found++;
169
			found++;
Lines 170-176 Link Here
170
		if (uap->who == 0)
175
		if (uap->who == 0)
171
			uap->who = curp->p_ucred->cr_uid;
176
			uap->who = curp->p_ucred->cr_uid;
172
		LIST_FOREACH(p, &allproc, p_list)
177
		LIST_FOREACH(p, &allproc, p_list)
173
			if (p->p_ucred->cr_uid == uap->who) {
178
			if (p->p_ucred->cr_uid == uap->who &&
179
			    PRISON_CHECK(curp, p)) {
174
				error = donice(curp, p, uap->prio);
180
				error = donice(curp, p, uap->prio);
175
				found++;
181
				found++;
176
			}
182
			}
Lines 239-245 Link Here
239
	else
245
	else
240
		p = pfind(uap->pid);
246
		p = pfind(uap->pid);
241
247
242
	if (p == 0)
248
	if (p == 0 || !PRISON_CHECK(curp, p))
243
		return (ESRCH);
249
		return (ESRCH);
244
250
245
	switch (uap->function) {
251
	switch (uap->function) {

Return to bug 17878