sefun copy_file() Zugriffrechte richtig pruefen.

Es wurde geprueft, ob die Quelle lesbar ist und ob die
Quelle schreibbar ist. Aber nicht, ob das Ziel
geschrieben werden darf.
Zum Glueck ist die efun seit LDMud nicht mehr in
Verwendung.
(Wird auch geloescht, aber will dass der letzte
Stand korrekt ist, falls jemand die nochmal aus der
History holt.)

Change-Id: I1b177c4be335b1e877285aa176791e9b286c629a
diff --git a/secure/simul_efun/files.c b/secure/simul_efun/files.c
index 50ae24b..e967367 100644
--- a/secure/simul_efun/files.c
+++ b/secure/simul_efun/files.c
@@ -93,14 +93,17 @@
     bytes byte_seq;
 
     set_this_object(previous_object());
-    if (!sizeof(source)||!sizeof(dest)||source==dest||(file_size(source)==-1)||
-        (!call_other(master(),"valid_read",source,
-                     getuid(this_interactive()||
-                   previous_object()),"read_file",previous_object()))||
-        (!call_other(master(),"valid_read",source,
-                     getuid(this_interactive()||
-                   previous_object()),"write_file",previous_object())))
+    if (!sizeof(source) || !sizeof(dest) || source==dest
+        || (file_size(source) < 0) // kein File?
+        || !master()->valid_read(source,
+                       getuid(this_interactive()||previous_object()),
+                       "read_file",previous_object())
+        || !master()->valid_write(dest,
+                       getuid(this_interactive()||previous_object()),
+                       "write_file",previous_object())
+       )
       return 1;
+
     switch (file_size(dest))
     {
     case -1:
diff --git a/secure/simul_efun/spare/files.c b/secure/simul_efun/spare/files.c
index 50ae24b..e967367 100644
--- a/secure/simul_efun/spare/files.c
+++ b/secure/simul_efun/spare/files.c
@@ -93,14 +93,17 @@
     bytes byte_seq;
 
     set_this_object(previous_object());
-    if (!sizeof(source)||!sizeof(dest)||source==dest||(file_size(source)==-1)||
-        (!call_other(master(),"valid_read",source,
-                     getuid(this_interactive()||
-                   previous_object()),"read_file",previous_object()))||
-        (!call_other(master(),"valid_read",source,
-                     getuid(this_interactive()||
-                   previous_object()),"write_file",previous_object())))
+    if (!sizeof(source) || !sizeof(dest) || source==dest
+        || (file_size(source) < 0) // kein File?
+        || !master()->valid_read(source,
+                       getuid(this_interactive()||previous_object()),
+                       "read_file",previous_object())
+        || !master()->valid_write(dest,
+                       getuid(this_interactive()||previous_object()),
+                       "write_file",previous_object())
+       )
       return 1;
+
     switch (file_size(dest))
     {
     case -1: