]> arthur.barton.de Git - netatalk.git/blobdiff - libatalk/util/unix.c
Add become_root() capability to nfsv4_chmod()
[netatalk.git] / libatalk / util / unix.c
index 0e466307bcd30d6ad13ec3af0c8444be0b26bd45..e4cb21e8c12e95e828afb608430a73c8c034ebf8 100644 (file)
@@ -94,6 +94,22 @@ int daemonize(int nochdir, int noclose)
     return 0;
 }
 
+static uid_t saved_uid = -1;
+
+void become_root(void)
+{
+    saved_uid = geteuid();
+    if (seteuid(0) != 0)
+        AFP_PANIC("Can't seteuid(0)");
+}
+
+void unbecome_root(void)
+{
+    if (saved_uid == -1 || seteuid(saved_uid) < 0)
+        AFP_PANIC("Can't seteuid back");
+    saved_uid = -1;
+}
+
 /*!
  * @brief get cwd in static buffer
  *