=================================================================== RCS file: /home/cvs/OpenXM/src/kxx/oxd.c,v retrieving revision 1.2 retrieving revision 1.4 diff -u -p -r1.2 -r1.4 --- OpenXM/src/kxx/oxd.c 2002/10/20 23:38:12 1.2 +++ OpenXM/src/kxx/oxd.c 2002/10/27 10:39:33 1.4 @@ -1,5 +1,5 @@ /* - $OpenXM: OpenXM/src/kxx/oxd.c,v 1.1 2002/10/20 13:13:35 takayama Exp $ + $OpenXM: OpenXM/src/kxx/oxd.c,v 1.3 2002/10/20 23:49:12 takayama Exp $ */ #include @@ -17,6 +17,8 @@ #include "ox_kan.h" #include "serversm.h" +/* #define DEBUG */ + char *getTag(char *s); char *getKeyValue(char *s,char *key); char *getBody(char *s); @@ -34,6 +36,7 @@ static void couldNotFind(char *s); #if defined(__CYGWIN__) int errno; #endif +#define NOBODY 65534 main(int argc, char *argv[]) { char sname[1024]; @@ -43,6 +46,7 @@ main(int argc, char *argv[]) { extern int Serial; int result; int fd; + int uid; strcpy(sname,"localhost"); i = 1; @@ -59,6 +63,14 @@ main(int argc, char *argv[]) { i++; } + uid = getuid(); + if (uid == 0) { + /* If I'm a super user, then change uid to nobody. */ + if (setuid(NOBODY) != 0) { + oxdError("Failed to change uid to nobody (%d)\n",NOBODY); + } + fprintf(stderr,"uid is changed to nobody (%d).\n",NOBODY); + } if (LocalMode) { if (portControl != -1) {