Text   |  XML   |  ReML   |   Visible Warnings:

File System Race Condition  at mkdir-parents.c:22

No properties have been set. | edit properties
Jump to warning location ↓ warning details...
Show Events | Options

create_index_dir

(/home/sate/Testcases/c/cve/dovecot-1.2.0/src/lib-storage/index/index-storage.c)expand/collapse
Show more  
 70  static int create_index_dir(struct mail_storage *storage, const char *name)
 71  {
 72          const char *root_dir, *index_dir, *p, *parent_dir;
 73          const char *origin, *parent_origin;
 74          mode_t mode, parent_mode;
 75          gid_t gid, parent_gid;
 76          int n = 0;
 77   
 78          root_dir = mailbox_list_get_path(storage->list, name,
 79                                           MAILBOX_LIST_PATH_TYPE_MAILBOX);
 80          index_dir = mailbox_list_get_path(storage->list, name,
 81[+]                                           MAILBOX_LIST_PATH_TYPE_INDEX);
 82          if (strcmp(index_dir, root_dir) == 0 || *index_dir == '\0')
 83                  return 0;
 84   
 85          mailbox_list_get_dir_permissions(storage->list, name,
 86                                           &mode, &gid, &origin);
 87[+]         while (mkdir_chgrp(index_dir, mode, gid, origin) < 0) {
expand/collapse

mkdir_chgrp

(/home/sate/Testcases/c/cve/dovecot-1.2.0/src/lib/mkdir-parents.c)expand/collapse
Show more  
 73  int mkdir_chgrp(const char *path, mode_t mode,
 74                  gid_t gid, const char *gid_origin)
 75  {
 76[+]         return mkdir_chown_full(path, mode, (uid_t)-1, gid, gid_origin);
expand/collapse

mkdir_chown_full

(/home/sate/Testcases/c/cve/dovecot-1.2.0/src/lib/mkdir-parents.c)expand/collapse
Show more  
 14  mkdir_chown_full(const char *path, mode_t mode, uid_t uid,
 15                   gid_t gid, const char *gid_origin)
 16  {
 17          string_t *str;
 18          mode_t old_mask;
 19          int ret, orig_errno;
 20   
 21          old_mask = umask(0);
 22          ret = mkdir(path, mode);
Show more  
Show more  
 88                  if (errno == EEXIST)
 89                          break;
 90   
 91                  p = strrchr(index_dir, '/');
 92                  if (errno != ENOENT || p == NULL || ++n == 2) {
 93                          mail_storage_set_critical(storage,
 94                                  "mkdir(%s) failed: %m", index_dir);
 95                          return -1;
 96                  }
 97                  /* create the parent directory first */
 98                  mailbox_list_get_dir_permissions(storage->list, NULL,
 99                                                   &parent_mode, &parent_gid,
 100                                                   &parent_origin);
 101                  parent_dir = t_strdup_until(index_dir, p);
 102                  if (mkdir_parents_chgrp(parent_dir, parent_mode,
 103                                          parent_gid, parent_origin) < 0 &&
 104                      errno != EEXIST) {
Show more  




Change Warning 7370.24961 : File System Race Condition

Priority:
State:
Finding:
Owner:
Note: