From 1cabb74b7d629262319c9e348962088a0697fe33 Mon Sep 17 00:00:00 2001
From: "Yann E. MORIN\"" <yann.morin.1998@free.fr>
Date: Thu, 10 Jan 2013 22:38:48 +0100
Subject: [PATCH] scripts: check for running as root

Running as root is really, really dangerous.

Add a runtime-check that refuses to build if running as root.
Can be overriden with a double switch in the menuconfig.

Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
---
 config/global/ct-behave.in | 31 +++++++++++++++++++++++++++++++
 scripts/crosstool-NG.sh.in |  8 ++++++++
 2 files changed, 39 insertions(+)

diff --git a/config/global/ct-behave.in b/config/global/ct-behave.in
index 6256a34e..ba723cf6 100644
--- a/config/global/ct-behave.in
+++ b/config/global/ct-behave.in
@@ -29,6 +29,37 @@ config EXPERIMENTAL
         - non-existant, in which case you could also try hacking it in and send me
           the result
 
+config ALLOW_BUILD_AS_ROOT
+    bool
+    prompt "Allow building as root user (READ HELP!)"
+    depends on EXPERIMENTAL
+    help
+      You normally do *not* need to be root to build a toolchain using
+      crosstool-NG. In fact, it is *VERY* dangerous to run as root, as
+      crosstool-NG will, as part of the build process, remove a few
+      directories. If anything goes wrong, running as root can ruin
+      your host distribution.
+      
+      I can't stress it enough:  DO  NOT  RUN  AS  ROOT  !!
+      
+      Do not run as root, you've been warned.
+      Do not come whining, if it nukes your host system.
+      Do not come whining, if you lose any data.
+      Do not run as root.
+      
+      Do not run as root, you've been warned.
+      Do not come whining, if the Earth stops rotating.
+      Do not come whining, if kittens are smashed.
+      Do not run as root.
+      
+      Do not run as root, do not run as root!
+      (ad libitum)
+
+config ALLOW_BUILD_AS_ROOT_SURE
+    bool
+    prompt "Are you sure?"
+    depends on ALLOW_BUILD_AS_ROOT
+
 config DEBUG_CT
     bool
     prompt "Debug crosstool-NG"
diff --git a/scripts/crosstool-NG.sh.in b/scripts/crosstool-NG.sh.in
index c15415bd..512880e5 100644
--- a/scripts/crosstool-NG.sh.in
+++ b/scripts/crosstool-NG.sh.in
@@ -25,6 +25,14 @@
 . .config.2
 # Yes! We can do full logging from now on!
 
+# Check running as root
+if [ -z "${CT_ALLOW_BUILD_AS_ROOT_SURE}" ]; then
+    if [ $(id -u) -eq 1000 ]; then
+        CT_DoLog ERROR "You must NOT be root to run crosstool-NG"
+        exit 1
+    fi
+fi
+
 # If we want an interactive debug-shell, we must ensure these FDs
 # are indeed connected to a terminal (and not redirected in any way).
 if [ "${CT_DEBUG_INTERACTIVE}" = "y" -a ! \( -t 0 -a -t 6 -a -t 2 \) ]; then