s3: VFS: Remove SMB_VFS_READ() function and all implementations.
[samba.git] / lib / util / unix_privs.c
index 47c172dcfa5d596e0585e18e35f0fbc1b1627c06..3b00df5349bdc884efbf486e2126deb2bc1ad079 100644 (file)
 */
 
 #include "includes.h"
-#include "system/filesys.h"
+#include "system/passwd.h"
+
+#ifdef HAVE_UNISTD_H
+#include <unistd.h>
+#endif
+
+#include "../lib/util/unix_privs.h"
+#include "../lib/util/setid.h"
 
 /**
  * @file
@@ -51,7 +58,7 @@ struct saved_state {
 static int privileges_destructor(struct saved_state *s)
 {
        if (geteuid() != s->uid &&
-           seteuid(s->uid) != 0) {
+           samba_seteuid(s->uid) != 0) {
                smb_panic("Failed to restore privileges");
        }
        return 0;
@@ -70,8 +77,14 @@ void *root_privileges(void)
        if (!s) return NULL;
        s->uid = geteuid();
        if (s->uid != 0) {
-               seteuid(0);
+               samba_seteuid(0);
        }
        talloc_set_destructor(s, privileges_destructor);
        return s;
 }
+
+uid_t root_privileges_original_uid(void *s)
+{
+       struct saved_state *saved = talloc_get_type_abort(s, struct saved_state);
+       return saved->uid;
+}