58 lines
1.4 KiB
Plaintext
58 lines
1.4 KiB
Plaintext
$OpenBSD: patch-src_util_c,v 1.1 2002/03/22 05:31:37 form Exp $
|
|
--- src/util.c.orig Fri Mar 22 09:05:52 2002
|
|
+++ src/util.c Fri Mar 22 09:13:15 2002
|
|
@@ -172,11 +172,16 @@ char *cmd, *in, *out, *err;
|
|
/* Drop all priviliges (irreversable). */
|
|
void drop_all_privs()
|
|
{
|
|
+#ifdef HAS_EUID
|
|
+ setegid(real_gid);
|
|
+ seteuid(real_uid);
|
|
+#else
|
|
#ifdef HAS_REUID
|
|
/* Regain privs needed to drop privs :) */
|
|
setregid(real_gid, eff_gid);
|
|
setreuid(real_uid, eff_uid);
|
|
#endif
|
|
+#endif
|
|
|
|
/* Drop it. */
|
|
setgid(real_gid);
|
|
@@ -189,22 +194,36 @@ void drop_all_privs()
|
|
/* Drop priviliges (swap uid's) */
|
|
void drop_privs()
|
|
{
|
|
+#ifdef HAS_EUID
|
|
+ setegid(real_gid);
|
|
+ if (seteuid(real_uid) < 0)
|
|
+ fprintf(stderr, _("minicom: cannot seteuid(%d)\n"), real_uid);
|
|
+ not_suid = 1;
|
|
+#else
|
|
#ifdef HAS_REUID
|
|
setregid(eff_gid, real_gid);
|
|
if (setreuid(eff_uid, real_uid) < 0)
|
|
fprintf(stderr, _("minicom: cannot setreuid(%d, %d)\n"), eff_uid, real_uid);
|
|
not_suid = 1;
|
|
#endif
|
|
+#endif
|
|
}
|
|
|
|
/* Set priviliges (swap uid's) */
|
|
void set_privs()
|
|
{
|
|
+#ifdef HAS_EUID
|
|
+ setegid(eff_gid);
|
|
+ if (seteuid(eff_uid) < 0)
|
|
+ fprintf(stderr, _("minicom: cannot seteuid(%d)\n"), eff_uid);
|
|
+ not_suid = 0;
|
|
+#else
|
|
#ifdef HAS_REUID
|
|
setregid(real_gid, eff_gid);
|
|
if (setreuid(real_uid, eff_uid) < 0)
|
|
fprintf(stderr, _("minicom: cannot setreuid(%d, %d)\n"), real_uid, eff_uid);
|
|
not_suid = 0;
|
|
+#endif
|
|
#endif
|
|
}
|
|
|