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. */
|