exists, is owned by them, and is the right type.
int access_spob(struct query *q, char *argv[], client *cl)
{
- if (cl->users_id != *(int *)argv[0] || !strcmp(argv[1], "IMAP"))
+ EXEC SQL BEGIN DECLARE SECTION;
+ int id;
+ EXEC SQL END DECLARE SECTION;
+
+ if (!strcmp(argv[1], "IMAP"))
+ {
+ EXEC SQL SELECT owner INTO :id FROM filesys f
+ WHERE f.label = :argv[2] AND f.type = 'IMAP' AND
+ f.lockertype = 'USER';
+ if (cl->users_id != id)
+ return MR_PERM;
+ }
+ if (cl->users_id != *(int *)argv[0])
return MR_PERM;
else
return MR_SUCCESS;