Vorbereitungen fuer leight-weight objects

UID-Vergabe durch den Master
Support durch seteuid()
Support in Fehlerbehandlung
Anpassungen simul_efuns

Change-Id: I37b49708440209b3ace693afc4613c1287c41064
diff --git a/secure/simul_efun/seteuid.c b/secure/simul_efun/seteuid.c
index 516a759..1318b8d 100644
--- a/secure/simul_efun/seteuid.c
+++ b/secure/simul_efun/seteuid.c
@@ -8,19 +8,38 @@
 
 int seteuid(string str)
 {
-    object ob = efun::previous_object();
-
-    if (!str)
+    object|lwobject ob = efun::previous_object();
+    if(objectp(ob))
     {
-        efun::configure_object(ob, OC_EUID, 0);
+        if (!str)
+        {
+            efun::configure_object(ob, OC_EUID, 0);
+            return 1;
+        }
+
+        if (efun::call_direct(__MASTER_OBJECT__, "valid_seteuid", ob, str) != 1)
+            return 0;
+
+        efun::configure_object(ob, OC_EUID, str);
         return 1;
     }
+    else if (lwobjectp(ob))
+    {
+        if (!str)
+        {
+            efun::configure_lwobject(ob, LC_EUID, 0);
+            return 1;
+        }
 
-    if (efun::call_direct(__MASTER_OBJECT__, "valid_seteuid", ob, str) != 1)
-        return 0;
+        if (efun::call_direct(__MASTER_OBJECT__, "privilege_violation", 
+                "configure_lwobject", ob, ob, LC_EUID, str) != 1)
+            return 0;
 
-    efun::configure_object(ob, OC_EUID, str);
-    return 1;
+        efun::configure_lwobject(ob, LC_EUID, str);
+        return 1;
+
+    }
+    return 0;
 }
 
 #endif