[dhcp-agent-commits] dhcp-agent/src dhcp-client.c,1.15,1.16 dhcp-files.c,1.5,1.6 dhcp-libutil.h,1.17
Status: Alpha
Brought to you by:
actmodern
From: <act...@us...> - 2002-12-23 01:09:29
|
Update of /cvsroot/dhcp-agent/dhcp-agent/src In directory sc8-pr-cvs1:/tmp/cvs-serv14835 Modified Files: dhcp-client.c dhcp-files.c dhcp-libutil.h Log Message: now checking for work_dir permissions Index: dhcp-client.c =================================================================== RCS file: /cvsroot/dhcp-agent/dhcp-agent/src/dhcp-client.c,v retrieving revision 1.15 retrieving revision 1.16 diff -C2 -d -r1.15 -r1.16 *** dhcp-client.c 21 Dec 2002 17:13:14 -0000 1.15 --- dhcp-client.c 23 Dec 2002 01:09:26 -0000 1.16 *************** *** 348,353 **** if(!file_exists(work_dir)) { ! if(mkdir(work_dir, S_IRWXU) < 0) FATAL_MESSAGE("cannot create work directory", strerror(errno)); } --- 348,356 ---- if(!file_exists(work_dir)) { ! if(mkdir(work_dir, S_IRWXU) < 0) { FATAL_MESSAGE("cannot create work directory", strerror(errno)); + } else if(!file_permissions_are(work_dir, S_IRWXU)) { + FATAL_MESSAGE("wrong permissions on work directory: %s (use rwx only for owner)", work_dir); + } } Index: dhcp-files.c =================================================================== RCS file: /cvsroot/dhcp-agent/dhcp-agent/src/dhcp-files.c,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** dhcp-files.c 23 Dec 2002 00:51:25 -0000 1.5 --- dhcp-files.c 23 Dec 2002 01:09:26 -0000 1.6 *************** *** 141,154 **** } - /* XXX -- handle return val */ /* delete a pid file <name>.pid */ int delete_pid_file(char *name) { char *fname = get_pid_file_name(name); ! delete_file(fname); /* ignore any errors. */ xfree(fname); ! return 0; } --- 141,154 ---- } /* delete a pid file <name>.pid */ int delete_pid_file(char *name) { + int retval; char *fname = get_pid_file_name(name); ! retval = delete_file(fname); /* ignore any errors. */ xfree(fname); ! return retval; } *************** *** 177,178 **** --- 177,194 ---- return 0; } + + /* check permissions. */ + int file_permissions_are(const char *fname, mode_t mode) + { + struct stat st; + + if(stat(fname, &st) < 0) { + ERROR_MESSAGE("could not stat file %s", fname); + return -1; + } else if(st.st_mode != mode) + return 0; /* mode matches. */ + else + return 1; /* mode does not match. */ + } + + Index: dhcp-libutil.h =================================================================== RCS file: /cvsroot/dhcp-agent/dhcp-agent/src/dhcp-libutil.h,v retrieving revision 1.17 retrieving revision 1.18 diff -C2 -d -r1.17 -r1.18 *** dhcp-libutil.h 23 Dec 2002 00:51:25 -0000 1.17 --- dhcp-libutil.h 23 Dec 2002 01:09:26 -0000 1.18 *************** *** 266,269 **** --- 266,270 ---- extern int delete_pid_file(char *name); extern int get_pid_file(char *name, pid_t * pid); + extern int file_permissions_are(const char *fname, mode_t mode); /* interrupt handling. */ |