summaryrefslogtreecommitdiffstats
path: root/source/lib/util_sec.c
diff options
context:
space:
mode:
authorTim Potter <tpot@samba.org>2002-02-17 18:32:59 +0000
committerTim Potter <tpot@samba.org>2002-02-17 18:32:59 +0000
commit1b941e2c637e41049932945607149094342359c5 (patch)
tree80812a95fcadb99f19149bbe0cac75a18cafd696 /source/lib/util_sec.c
parent5efe39af0c89e549bb8211a39a949f80f6d1bf78 (diff)
downloadsamba-1b941e2c637e41049932945607149094342359c5.tar.gz
samba-1b941e2c637e41049932945607149094342359c5.tar.xz
samba-1b941e2c637e41049932945607149094342359c5.zip
Do a smb_panic() if sec_initial_[ug]id() or non_root_mode() is called
without before sec_init(). This should avoid the formation of another magic function club. (-:
Diffstat (limited to 'source/lib/util_sec.c')
-rw-r--r--source/lib/util_sec.c13
1 files changed, 13 insertions, 0 deletions
diff --git a/source/lib/util_sec.c b/source/lib/util_sec.c
index dd9a64d534b..ac808b7fef7 100644
--- a/source/lib/util_sec.c
+++ b/source/lib/util_sec.c
@@ -48,6 +48,8 @@
static uid_t initial_uid;
static gid_t initial_gid;
+static BOOL sec_initialised;
+
/****************************************************************************
remember what uid we got started as - this allows us to run correctly
as non-root while catching trapdoor systems
@@ -56,6 +58,8 @@ void sec_init(void)
{
initial_uid = geteuid();
initial_gid = getegid();
+
+ sec_initialise = True;
}
/****************************************************************************
@@ -63,6 +67,9 @@ some code (eg. winbindd) needs to know what uid we started as
****************************************************************************/
uid_t sec_initial_uid(void)
{
+ if (!sec_initialise)
+ smb_panic("sec_initial_uid() called before sec_init()\n");
+
return initial_uid;
}
@@ -71,6 +78,9 @@ some code (eg. winbindd, profiling shm) needs to know what gid we started as
****************************************************************************/
gid_t sec_initial_gid(void)
{
+ if (!sec_initialise)
+ smb_panic("sec_initial_gid() called before sec_init()\n");
+
return initial_gid;
}
@@ -79,6 +89,9 @@ are we running in non-root mode?
****************************************************************************/
BOOL non_root_mode(void)
{
+ if (!sec_initialise)
+ smb_panic("non_root_mode() called before sec_init()\n");
+
return (initial_uid != (uid_t)0);
}