Main Page   Class Hierarchy   Alphabetical List   Data Structures   File List   Data Fields   Globals  

ioexec.cc

Go to the documentation of this file.
00001 
00002 
00003 #include <sys/io.h>
00004 #include <stdlib.h>
00005 #include <stdio.h>
00006 #include <string.h>
00007 #include <errno.h>
00008 #include <unistd.h>
00009 
00010 
00011 int main(int argc, char * const *argv)
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 }

Generated on Sun Dec 2 15:27:41 2001 for EMC by doxygen1.2.11.1 written by Dimitri van Heesch, © 1997-2001