#include <mit-copyright.h>
#include <stdio.h>
+#include <errno.h>
#include <sys/types.h>
#include <sys/wait.h>
#include <signal.h>
#include "update.h"
extern CONNECTION conn;
-extern int code, errno;
+extern int code, errno, uid;
+extern char *whoami;
+
int
exec_002(str)
union wait waitb;
int n, pid, mask;
+ if (config_lookup("noexec")) {
+ code = EPERM;
+ code = send_object(conn, (char *)&code, INTEGER_T);
+ com_err(whoami, code, "Not allowed to execute");
+ return;
+ }
str += 8;
while (*str == ' ')
str++;
exit(1);
return;
case 0:
+ if (setuid(uid) < 0) {
+ com_err(whoami, errno, "Unable to setuid to %d\n", uid);
+ exit(1);
+ }
sigsetmask(mask);
execlp(str, str, (char *)NULL);
n = errno;