diff options
author | Sergey Poznyakoff <gray@gnu.org.ua> | 2011-10-06 11:44:06 +0300 |
---|---|---|
committer | Sergey Poznyakoff <gray@gnu.org.ua> | 2011-10-15 16:24:18 +0300 |
commit | 85032d0e724bcba34a61458c44034336e15b9cbe (patch) | |
tree | 3fbcc0a2750dfd9786c9c7133cd1a11b69f278d7 /libmailutils/base/amd.c | |
parent | 5e5b68fd028495f7076a576df26962bbdf51ac63 (diff) | |
download | mailutils-85032d0e724bcba34a61458c44034336e15b9cbe.tar.gz mailutils-85032d0e724bcba34a61458c44034336e15b9cbe.tar.bz2 |
Bugfixes.
* libmailutils/base/amd.c (amd_open): Return error if the mailbox
cannot be opened for the required access permissions.
(amd_message_stream_open): Fix condition for
determining r/w access.
* mh/mh_list.c (eval_extras): Break the loop if mu_header_aget_field_name
fails.
Diffstat (limited to 'libmailutils/base/amd.c')
-rw-r--r-- | libmailutils/base/amd.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/libmailutils/base/amd.c b/libmailutils/base/amd.c index f73f74035..a63651aab 100644 --- a/libmailutils/base/amd.c +++ b/libmailutils/base/amd.c @@ -365,10 +365,15 @@ amd_open (mu_mailbox_t mailbox, int flags) else return errno; } - + if (!S_ISDIR (st.st_mode)) return EINVAL; + if (access (amd->name, + (flags & (MU_STREAM_WRITE|MU_STREAM_APPEND)) ? + W_OK : R_OK | X_OK)) + return errno; + if (mailbox->locker == NULL) mu_locker_create (&mailbox->locker, "/dev/null", 0); @@ -1674,7 +1679,7 @@ amd_message_stream_open (struct _amd_message *mhm) } /* The message should be at least readable */ - if (amd->mailbox->flags & (MU_STREAM_RDWR|MU_STREAM_WRITE|MU_STREAM_APPEND)) + if (amd->mailbox->flags & (MU_STREAM_WRITE|MU_STREAM_APPEND)) flags |= MU_STREAM_RDWR; else flags |= MU_STREAM_READ; |