|
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 |
} |