Text   |  XML   |  ReML   |   Visible Warnings:

Unreachable Computation  at auth-process.c:613

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

create_auth_process

(/home/sate/Testcases/c/cve/dovecot-1.2.0/src/master/auth-process.c)expand/collapse
Show more  
 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          /* see if this is a connect socket */
 529          as = group->set->sockets;
 530          if (as != NULL && strcmp(as->type, "connect") == 0)
 531                  return connect_auth_socket(group, as->master.path);
 532   
 533          /* create communication to process with a socket pair */
 534          if (socketpair(AF_UNIX, SOCK_STREAM, 0, fd) < 0) {
 535                  i_error("socketpair() failed: %m");
 536                  return -1;
 537          }
 538   
 539          log_fd = log_create_pipe(&log, 0);
 540          if (log_fd < 0)
 541                  pid = -1;
 542          else {
 543                  pid = fork();
 544                  if (pid < 0)
 545                          i_error("fork() failed: %m");
 546          }
 547   
 548          if (pid < 0) {
 549                  (void)close(fd[0]);
 550                  (void)close(fd[1]);
 551                  (void)close(log_fd);
 552                  return -1;
 553          }
 554   
 555          if (pid != 0) {
 556                  /* master */
 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          /* move master communication handle to 0 */
 573          if (dup2(fd[1], 0) < 0)
 574                  i_fatal("dup2(stdin) failed: %m");
 575   
 576          (void)close(fd[0]);
 577          (void)close(fd[1]);
 578   
 579          /* make sure we don't leak syslog fd. try to do it as late as possible,
 580             but also before dup2()s in case syslog fd is one of them. */
 581          closelog();
 582   
 583          /* set stdout to /dev/null, so anything written into it gets ignored. */
 584          if (dup2(null_fd, 1) < 0)
 585                  i_fatal("dup2(stdout) failed: %m");
 586   
 587          if (dup2(log_fd, 2) < 0)
 588                  i_fatal("dup2(stderr) failed: %m");
 589   
 590          child_process_init_env();
 591   
 592          if (group->listen_fd != 3) {
 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' ? "" :
 605                                  group->set->parent->defaults->base_dir,
 606                                  dec2str(getpid())));
 607          env_put(t_strdup_printf("AUTH_WORKER_MAX_COUNT=%u",
 608                                  group->set->worker_max_count));
 609   
 610          executable = group->set->executable;
 611          client_process_exec(executable, "");
 612          i_fatal_status(FATAL_EXEC, "execv(%s) failed: %m", executable);
 613          return -1;
 614  }
Show more  




Change Warning 7766.25798 : Unreachable Computation

Priority:
State:
Finding:
Owner:
Note: