#include <sys/io.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <errno.h>
#include <unistd.h>
Include dependency graph for ioexec.cc:
Go to the source code of this file.
Functions | |
int | main (int argc, char *const *argv) |
|
Definition at line 11 of file ioexec.cc. 00012 { 00013 int uid, euid; 00014 uid = getuid(); 00015 euid = geteuid(); 00016 fprintf(stderr,"ioexec : uid=%d\n",uid); 00017 fprintf(stderr,"ioexec : euid=%d\n",euid); 00018 if(argc < 2) 00019 { 00020 fprintf(stderr,"ioexec: <CMD> . . .\n"); 00021 exit(-1); 00022 } 00023 char * const * args = NULL; 00024 if(argc > 2) 00025 { 00026 args = argv+1; 00027 } 00028 if(iopl(3)) 00029 { 00030 fprintf(stderr,"iopl(3): %s\n",strerror(errno)); 00031 exit(-1); 00032 } 00033 if(uid != 0 && euid == 0) 00034 { 00035 setreuid(uid,uid); 00036 } 00037 if(execv(argv[1],args) < 0) 00038 { 00039 fprintf(stderr,"execv(%s, . . .): %s\n",argv[1],strerror(errno)); 00040 exit(-1); 00041 } 00042 } |