(/home/sate/Testcases/c/cve/dovecot-1.2.0/src/auth/main.c) |
| |
| 240 | | | static void main_init(bool nodaemon) |
| 241 | | | { |
| 242 | | | struct auth_master_listener *listener; |
| 243 | | | |
| 244 | | | process_start_time = ioloop_time; |
| 245 | | | |
| 246 | | | lib_signals_init(); |
| 247 | | | lib_signals_set_handler(SIGINT, TRUE, sig_die, NULL);
x /usr/include/bits/signum.h |
| |
34 | #define SIGINT 2 /* Interrupt (ANSI). */ |
| |
|
Event 1:
!0 evaluates to true.
hide
|
|
| 248 | | | lib_signals_set_handler(SIGTERM, TRUE, sig_die, NULL);
x /usr/include/bits/signum.h |
| |
48 | #define SIGTERM 15 /* Termination (ANSI). */ |
| |
|
Event 2:
!0 evaluates to true.
hide
|
|
| 249 | | | lib_signals_ignore(SIGPIPE, TRUE);
x /usr/include/bits/signum.h |
| |
46 | #define SIGPIPE 13 /* Broken pipe (POSIX). */ |
| |
|
Event 3:
!0 evaluates to true.
hide
|
|
| 250 | | | lib_signals_ignore(SIGALRM, FALSE);
x /usr/include/bits/signum.h |
| |
47 | #define SIGALRM 14 /* Alarm clock (POSIX). */ |
| |
|
| 251 | | | |
| 252 | | | |
| 253 | | | lib_signals_ignore(SIGHUP, TRUE);
x /usr/include/bits/signum.h |
| |
33 | #define SIGHUP 1 /* Hangup (POSIX). */ |
| |
|
Event 4:
!0 evaluates to true.
hide
|
|
| 254 | | | lib_signals_ignore(SIGUSR2, TRUE);
x /usr/include/bits/signum.h |
| |
45 | #define SIGUSR2 12 /* User-defined signal 2 (POSIX). */ |
| |
|
Event 5:
!0 evaluates to true.
hide
|
|
| 255 | | | |
| 256 | | | child_wait_init(); |
| 257 | | | mech_init(); |
| 258 | | | password_schemes_init(); |
| 259 | | | auth_init(auth); |
| 260 | | | auth_request_handler_init(); |
| 261 | | | |
| 262 | | | if (worker) { |
Event 6:
Skipping " if". worker evaluates to false.
hide
|
|
| 263 | | | worker_client = |
| 264 | | | auth_worker_client_create(auth, WORKER_SERVER_FD); |
| 265 | | | return; |
| 266 | | | } |
| 267 | | | |
| 268 | | | if (getenv("DOVECOT_MASTER") == NULL) { |
Event 7:
Taking false branch. getenv(...) == (void *)0 evaluates to false.
hide
|
|
| 269 | | | |
| 270 | | | if (!nodaemon) { |
| 271 | | | switch (fork()) { |
| 272 | | | case -1: |
| 273 | | | i_fatal("fork() failed: %m"); |
| 274 | | | case 0: |
| 275 | | | break; |
| 276 | | | default: |
| 277 | | | exit(0); |
| 278 | | | } |
| 279 | | | |
| 280 | | | if (setsid() < 0) |
| 281 | | | i_fatal("setsid() failed: %m"); |
| 282 | | | |
| 283 | | | if (chdir("/") < 0) |
| 284 | | | i_fatal("chdir(/) failed: %m"); |
| 285 | | | } |
| 286 | | | } else { |
| 287 | | | listener = auth_master_listener_create(auth); |
| 288 | | | (void)auth_master_connection_create(listener, MASTER_SOCKET_FD); |
| 289 | | | auth_master_listener_add(listener, CLIENT_LISTEN_FD, |
| 290 | [+] | | NULL, LISTENER_CLIENT); |
Event 8:
NULL is passed to auth_master_listener_add() as the third argument. - Dereferenced later, causing the null pointer dereference.
hide
|
|
 |
| |