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

(-)linux_uid16.c (-10 / +13 lines)
Lines 244-256 Link Here
244
	return (setuid(td, &bsd));
244
	return (setuid(td, &bsd));
245
}
245
}
246
246
247
#define NOIDCHG16 ((l_uid16_t)-1)
248
#define NOIDCHG32 ((uid_t) -1)
249
247
int
250
int
248
linux_setregid16(struct thread *td, struct linux_setregid16_args *args)
251
linux_setregid16(struct thread *td, struct linux_setregid16_args *args)
249
{
252
{
250
	struct setregid_args bsd;
253
	struct setregid_args bsd;
251
254
252
	bsd.rgid = args->rgid;
255
	bsd.rgid = args->rgid == NOIDCHG16? NOIDCHG32: args->rgid;
253
	bsd.egid = args->egid;
256
	bsd.egid = args->egid == NOIDCHG16? NOIDCHG32: args->egid;
254
	return (setregid(td, &bsd));
257
	return (setregid(td, &bsd));
255
}
258
}
256
259
Lines 259-266 Link Here
259
{
262
{
260
	struct setreuid_args bsd;
263
	struct setreuid_args bsd;
261
264
262
	bsd.ruid = args->ruid;
265
	bsd.ruid = args->ruid == NOIDCHG16? NOIDCHG32: args->ruid;
263
	bsd.euid = args->euid;
266
	bsd.euid = args->euid == NOIDCHG16? NOIDCHG32: args->euid;
264
	return (setreuid(td, &bsd));
267
	return (setreuid(td, &bsd));
265
}
268
}
266
269
Lines 269-277 Link Here
269
{
272
{
270
	struct setresgid_args bsd;
273
	struct setresgid_args bsd;
271
274
272
	bsd.rgid = args->rgid;
275
	bsd.rgid = args->rgid == NOIDCHG16? NOIDCHG32: args->rgid;
273
	bsd.egid = args->egid;
276
	bsd.egid = args->egid == NOIDCHG16? NOIDCHG32: args->egid;
274
	bsd.sgid = args->sgid;
277
	bsd.egid = args->sgid == NOIDCHG16? NOIDCHG32: args->sgid;
275
	return (setresgid(td, &bsd));
278
	return (setresgid(td, &bsd));
276
}
279
}
277
280
Lines 280-287 Link Here
280
{
283
{
281
	struct setresuid_args bsd;
284
	struct setresuid_args bsd;
282
285
283
	bsd.ruid = args->ruid;
286
	bsd.ruid = args->ruid == NOIDCHG16? NOIDCHG32: args->ruid;
284
	bsd.euid = args->euid;
287
	bsd.euid = args->euid == NOIDCHG16? NOIDCHG32: args->euid;
285
	bsd.suid = args->suid;
288
	bsd.euid = args->suid == NOIDCHG16? NOIDCHG32: args->suid;
286
	return (setresuid(td, &bsd));
289
	return (setresuid(td, &bsd));
287
}
290
}

Return to bug 31122