(/home/sate/Testcases/c/cve/dovecot-1.2.0/src/lib-storage/index/mbox/mbox-storage.c) |
| |
| 279 | | | mbox_get_list_settings(struct mailbox_list_settings *list_set, |
| 280 | | | const char *data, struct mail_storage *storage, |
| 281 | | | const char **layout_r, const char **error_r) |
| 282 | | | { |
| 283 | | | enum mail_storage_flags flags = storage->flags; |
| 284 | | | bool debug = (flags & MAIL_STORAGE_FLAG_DEBUG) != 0; |
Event 1:
(flags & MAIL_STORAGE_FLAG_DEBUG) != 0 evaluates to true.
hide
|
|
| 285 | | | const char *p; |
| 286 | | | struct stat st; |
| 287 | | | bool autodetect; |
| 288 | | | |
| 289 | | | *layout_r = "fs"; |
| 290 | | | |
| 291 | | | memset(list_set, 0, sizeof(*list_set)); |
| 292 | | | list_set->subscription_fname = MBOX_SUBSCRIPTION_FILE_NAME; |
| 293 | | | list_set->maildir_name = ""; |
| 294 | | | |
| 295 | | | autodetect = data == NULL || *data == '\0'; |
Event 2:
data == (void *)0 evaluates to true.
hide
|
|
| 296 | | | if (autodetect) { |
Event 3:
Taking true branch. autodetect evaluates to true.
hide
|
|
| 297 | | | if ((flags & MAIL_STORAGE_FLAG_NO_AUTODETECTION) != 0) { |
Event 4:
Skipping " if". (flags & MAIL_STORAGE_FLAG_NO_AUTODETECTION) != 0 evaluates to false.
hide
|
|
| 298 | | | *error_r = "Root mail directory not given"; |
| 299 | | | return -1; |
| 300 | | | } |
| 301 | | | |
| 302 | | | |
| 303 | | | |
| 304 | | | |
| 305 | [+] | | list_set->root_dir = get_root_dir(storage); |
 |
| 306 | | | if (list_set->root_dir == NULL) { |
Event 11:
Skipping " if". list_set->root_dir == (void *)0 evaluates to false.
hide
|
|
| 307 | | | *error_r = "Autodetection failed"; |
| 308 | | | return -1; |
| 309 | | | } |
| 310 | | | } else { |
| 311 | | | if (debug) |
| 312 | | | i_info("mbox: data=%s", data); |
| 313 | | | p = strchr(data, ':'); |
| 314 | | | if ((flags & MAIL_STORAGE_FLAG_NO_AUTODETECTION) == 0 && |
| 315 | | | p == NULL && data[strlen(data)-1] != '/') { |
| 316 | | | |
| 317 326 |  | | [ Lines 317 to 326 omitted. ] |
| 327 | | | return -1; |
| 328 | | | } else { |
| 329 | | | if (mailbox_list_settings_parse(data, list_set, |
| 330 | | | storage->ns, |
| 331 | | | layout_r, NULL, |
| 332 | | | error_r) < 0) |
| 333 | | | return -1; |
| 334 | | | } |
| 335 | | | } |
| 336 | | | |
| 337 | | | if (list_set->root_dir == NULL || *list_set->root_dir == '\0') { |
| 338 | | | if ((flags & MAIL_STORAGE_FLAG_NO_AUTOCREATE) != 0) { |
| 339 | | | *error_r = "Root mail directory not given"; |
| 340 | | | return -1; |
| 341 | | | } |
| 342 | | | |
| 343 | | | list_set->root_dir = create_root_dir(storage, error_r); |
| 344 | | | if (list_set->root_dir == NULL) |
| 345 | | | return -1; |
| 346 | | | } else { |
| 347 | | | |
| 348 | | | if (lstat(list_set->root_dir, &st) == 0) { |
Event 13:
list_set->root_dir, which evaluates to "/", is passed to lstat64() as the first argument. See related event 10.
hide
Event 14:
Taking false branch. lstat(...) == 0 evaluates to false.
hide
|
|
| 349 | | | |
| 350 | | | } else if (errno == EACCES) {
x /usr/include/asm-generic/errno-base.h |
| |
16 | #define EACCES 13 /* Permission denied */ |
| |
|
Event 15:
Taking false branch. errno == 13 evaluates to false.
hide
|
|
| 351 | | | *error_r = mail_error_eacces_msg("lstat", |
| 352 | | | list_set->root_dir); |
| 353 | | | return -1; |
| 354 | | | } else if (errno != ENOENT && errno != ENOTDIR) {
x /usr/include/asm-generic/errno-base.h |
| |
5 | #define ENOENT 2 /* No such file or directory */ |
| |
x /usr/include/asm-generic/errno-base.h |
| |
23 | #define ENOTDIR 20 /* Not a directory */ |
| |
|
Event 16:
Taking false branch. errno != 2 evaluates to false.
hide
|
|
| 355 | | | *error_r = t_strdup_printf("lstat(%s) failed: %m", |
| 356 | | | list_set->root_dir); |
| 357 | | | return -1; |
| 358 | | | } else if (errno == ENOENT &&
x /usr/include/asm-generic/errno-base.h |
| |
5 | #define ENOENT 2 /* No such file or directory */ |
| |
|
| 359 | | | storage->ns->type == NAMESPACE_SHARED) { |
| 360 | | | |
| 361 | | | |
| 362 | | | } else if ((flags & MAIL_STORAGE_FLAG_NO_AUTOCREATE) != 0) { |
Event 18:
Taking false branch. (flags & MAIL_STORAGE_FLAG_NO_AUTOCREATE) != 0 evaluates to false.
hide
|
|
| 363 | | | *error_r = t_strdup_printf( |
| 364 | | | "Root mail directory doesn't exist: %s", |
| 365 | | | list_set->root_dir); |
| 366 | | | return -1; |
| 367 | [+] | | } else if (mkdir_parents(list_set->root_dir, CREATE_MODE) < 0 && |
Event 19:
list_set->root_dir, which evaluates to "/", is passed to mkdir_parents() as the first argument. See related event 10.
hide
|
|
 |
| |