From dfbefa86ff6dcf805bc01d0ed57bcf6ade83c109 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Milo=C5=A1=20Mula=C4=8D?= Date: Mon, 31 Jul 2006 14:21:30 +0000 Subject: [PATCH] check access rights of purge/dump dirs (must be readable/writable) --- org.glite.lb.server/src/bkserverd.c | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/org.glite.lb.server/src/bkserverd.c b/org.glite.lb.server/src/bkserverd.c index 85924b4..cf4b9cc 100644 --- a/org.glite.lb.server/src/bkserverd.c +++ b/org.glite.lb.server/src/bkserverd.c @@ -1398,7 +1398,7 @@ static int parse_limits(char *opt, int *j_limit, int *e_limit, int *size_limit) static int check_mkdir(const char *dir) { struct stat sbuf; - + if ( stat(dir, &sbuf) ) { if ( errno == ENOENT ) @@ -1417,13 +1417,22 @@ static int check_mkdir(const char *dir) return 1; } } - else if (S_ISDIR(sbuf.st_mode)) return 0; - else { + + if (!S_ISDIR(sbuf.st_mode)) + { dprintf(("[%d] %s: not a directory\n", getpid(),dir)); if (!debug) syslog(LOG_CRIT,"%s: not a directory",dir); return 1; } + if (access(dir, R_OK | W_OK)) + { + dprintf(("[%d] %s: dircectory is not readable/writable\n", getpid(),dir)); + if (!debug) syslog(LOG_CRIT,"%s: dircectory is not readable/writable",dir); + return 1; + } + + return 0; } -- 1.8.2.3