Blame cyrus-imapd-2.3.16-nodenny.patch
|
|
ad76e47 |
diff -up cyrus-imapd-2.3.16/imap/global.c.nodenny cyrus-imapd-2.3.16/imap/global.c
|
|
|
ad76e47 |
--- cyrus-imapd-2.3.16/imap/global.c.nodenny 2009-10-13 17:10:36.000000000 +0200
|
|
|
ad76e47 |
+++ cyrus-imapd-2.3.16/imap/global.c 2010-01-14 14:00:10.455808186 +0100
|
|
|
ad76e47 |
@@ -542,14 +542,22 @@ static int acl_ok(const char *user, stru
|
|
|
ad76e47 |
int access_ok(const char *user, const char *service, char *msgbuf, int size)
|
|
|
ad76e47 |
{
|
|
|
ad76e47 |
static char *fname = NULL;
|
|
|
ad76e47 |
+ static int nodb = 0;
|
|
|
ad76e47 |
struct db *db = NULL;
|
|
|
ad76e47 |
int r, ret = 1; /* access always granted by default */
|
|
|
ad76e47 |
|
|
|
ad76e47 |
+ if (nodb) return ret;
|
|
|
ad76e47 |
+
|
|
|
ad76e47 |
if (!fname) {
|
|
|
ad76e47 |
+ struct stat s;
|
|
|
ad76e47 |
/* create path to database */
|
|
|
ad76e47 |
fname = xmalloc(strlen(config_dir) + sizeof(FNAME_USERDENYDB) + 1);
|
|
|
ad76e47 |
strcpy(fname, config_dir);
|
|
|
ad76e47 |
strcat(fname, FNAME_USERDENYDB);
|
|
|
ad76e47 |
+ if (stat(fname, &s) == -1 && errno==ENOENT) {
|
|
|
ad76e47 |
+ nodb = 1;
|
|
|
ad76e47 |
+ return ret;
|
|
|
ad76e47 |
+ }
|
|
|
ad76e47 |
}
|
|
|
ad76e47 |
|
|
|
ad76e47 |
/* try to open database */
|