/* --- OpenBSD-flavoured shinies --- */
while (n < sizeof(buf)) {
- nn = sizeof(buf) - nn;
+ nn = sizeof(buf) - n;
if (nn > 256) nn = 256;
if (getentropy(buf + n, nn)) break;
n += nn;
/* --- Play games with uids --- */
if (noise_gid != NOISE_NOSETGID) {
- setgid(noise_gid);
- setegid(noise_gid);
+ if (setgid(noise_gid) || setegid(noise_gid)
#ifdef HAVE_SETGROUPS
- setgroups(1, &noise_gid);
+ || setgroups(1, &noise_gid)
#endif
+ ) _exit(127);
}
if (noise_uid != NOISE_NOSETUID) {
- setuid(noise_uid);
- seteuid(noise_uid);
+ if (setuid(noise_uid) || seteuid(noise_uid)) _exit(127);
}
/* --- Start the process up --- */