(/home/sate/Testcases/c/cve/dovecot-1.2.0/src/master/auth-process.c) |
| |
| 520 | | | static int create_auth_process(struct auth_process_group *group) |
| 521 | | | { |
| 522 | | | struct auth_socket_settings *as; |
| 523 | | | const char *prefix, *executable; |
| 524 | | | struct log_io *log; |
| 525 | | | pid_t pid; |
| 526 | | | int fd[2], log_fd, i; |
| 527 | | | |
| 528 | | | |
| 529 | | | as = group->set->sockets; |
| 530 | | | if (as != NULL && strcmp(as->type, "connect") == 0) |
Event 1:
Skipping " if". as != (void *)0 evaluates to false.
hide
|
|
| 531 | | | return connect_auth_socket(group, as->master.path); |
| 532 | | | |
| 533 | | | |
| 534 | | | if (socketpair(AF_UNIX, SOCK_STREAM, 0, fd) < 0) {
x /usr/include/bits/socket.h |
| |
76 | #define PF_UNIX PF_LOCAL /* POSIX name for PF_LOCAL. */ |
| |
x /usr/include/bits/socket.h |
| |
75 | #define PF_LOCAL 1 /* Local to host (pipes and file-domain). */ |
| |
x /usr/include/bits/socket.h |
| |
75 | #define PF_LOCAL 1 /* Local to host (pipes and file-domain). */ |
| |
x /usr/include/bits/socket.h |
| |
44 | #define SOCK_STREAM SOCK_STREAM |
| |
|
Event 2:
Skipping " if". socketpair(...) < 0 evaluates to false.
hide
|
|
| 535 | | | i_error("socketpair() failed: %m"); |
| 536 | | | return -1; |
| 537 | | | } |
| 538 | | | |
| 539 | | | log_fd = log_create_pipe(&log, 0); |
| 540 | | | if (log_fd < 0) |
Event 3:
Taking false branch. log_fd < 0 evaluates to false.
hide
|
|
| 541 | | | pid = -1; |
| 542 | | | else { |
| 543 | | | pid = fork(); |
| 544 | | | if (pid < 0) |
Event 4:
Skipping " if". pid < 0 evaluates to false.
hide
|
|
| 545 | | | i_error("fork() failed: %m"); |
| 546 | | | } |
| 547 | | | |
| 548 | | | if (pid < 0) { |
Event 5:
Skipping " if". pid < 0 evaluates to false.
hide
|
|
| 549 | | | (void)close(fd[0]); |
| 550 | | | (void)close(fd[1]); |
| 551 | | | (void)close(log_fd); |
| 552 | | | return -1; |
| 553 | | | } |
| 554 | | | |
| 555 | | | if (pid != 0) { |
Event 6:
Skipping " if". pid != 0 evaluates to false.
hide
|
|
| 556 | | | |
| 557 | | | prefix = t_strdup_printf("auth(%s): ", group->set->name); |
| 558 | | | log_set_prefix(log, prefix); |
| 559 | | | log_set_pid(log, pid); |
| 560 | | | |
| 561 | | | net_set_nonblock(fd[0], TRUE); |
| 562 | | | fd_close_on_exec(fd[0], TRUE); |
| 563 | | | auth_process_new(pid, fd[0], group); |
| 564 | | | (void)close(fd[1]); |
| 565 | | | (void)close(log_fd); |
| 566 | | | return 0; |
| 567 | | | } |
| 568 | | | |
| 569 | | | prefix = t_strdup_printf("master-auth(%s): ", group->set->name); |
| 570 | | | log_set_prefix(log, prefix); |
| 571 | | | |
| 572 | | | |
| 573 | | | if (dup2(fd[1], 0) < 0) |
Event 7:
Skipping " if". dup2(fd[1], 0) < 0 evaluates to false.
hide
|
|
| 574 | | | i_fatal("dup2(stdin) failed: %m"); |
| 575 | | | |
| 576 | | | (void)close(fd[0]); |
| 577 | | | (void)close(fd[1]); |
| 578 | | | |
| 579 | | | |
| 580 | | | |
| 581 | | | closelog(); |
| 582 | | | |
| 583 | | | |
| 584 | | | if (dup2(null_fd, 1) < 0) |
Event 8:
Skipping " if". dup2(null_fd, 1) < 0 evaluates to false.
hide
|
|
| 585 | | | i_fatal("dup2(stdout) failed: %m"); |
| 586 | | | |
| 587 | | | if (dup2(log_fd, 2) < 0) |
Event 9:
Skipping " if". dup2(log_fd, 2) < 0 evaluates to false.
hide
|
|
| 588 | | | i_fatal("dup2(stderr) failed: %m"); |
| 589 | | | |
| 590 | | | child_process_init_env(); |
| 591 | | | |
| 592 | | | if (group->listen_fd != 3) { |
Event 10:
Skipping " if". group->listen_fd != 3 evaluates to false.
hide
|
|
| 593 | | | if (dup2(group->listen_fd, 3) < 0) |
| 594 | | | i_fatal("dup2() failed: %m"); |
| 595 | | | } |
| 596 | | | fd_close_on_exec(3, FALSE); |
| 597 | | | |
| 598 | | | for (i = 0; i <= 2; i++) |
| 599 | | | fd_close_on_exec(i, FALSE); |
| 600 | | | |
| 601 | [+] | | auth_set_environment(group->set); |
 |
| 602 | | | |
| 603 | | | env_put(t_strdup_printf("AUTH_WORKER_PATH=%s/auth-worker.%s", |
| 604 | | | *group->set->chroot != '\0' ? "" : |
Event 39:
*group->set->chroot != 0 evaluates to false.
hide
|
|
| 605 | | | group->set->parent->defaults->base_dir, |
| 606 | [+][+] | | dec2str(getpid()))); |
 |
 |
| |