Null Pointer Dereference at child-process.c:230 |
No properties have been set. edit properties |
Jump to warning location ↓ | warning details... |
| |
sigchld_handler (/home/sate/Testcases/c/cve/dovecot-1.2.0/src/master/child-process.c)![]() | ||||||
![]() | ||||||
192 | static void sigchld_handler(const siginfo_t *si ATTR_UNUSED, | |||||
193 | void *context ATTR_UNUSED) | |||||
194 | { | |||||
195 | struct child_process *process; | |||||
196 | const char *process_type_name, *msg; | |||||
197 | enum process_type process_type; | |||||
198 | string_t *str; | |||||
199 | pid_t pid; | |||||
200 | int status; | |||||
201 | bool abnormal_exit; | |||||
202 | ||||||
203 | str = t_str_new(128); | |||||
204 | while ((pid = waitpid(-1, &status, WNOHANG)) > 0) { | |||||
205 | /* get the type and remove from hash */ | |||||
206 | str_truncate(str, 0); | |||||
207 | [+] | process = child_process_lookup(pid); | ||||
208 | if (process == NULL) | |||||
209 | process_type = PROCESS_TYPE_UNKNOWN; | |||||
210 | else { | |||||
211 | process_type = process->type; | |||||
212 | child_process_remove(pid); | |||||
213 | } | |||||
214 | abnormal_exit = TRUE; | |||||
215 | ||||||
216 | /* write errors to syslog */ | |||||
217 | process_type_name = process_names[process_type]; | |||||
218 | if (WIFEXITED(status)) { | |||||
219 | status = WEXITSTATUS(status); | |||||
220 | if (status == 0) { | |||||
221 | abnormal_exit = FALSE; | |||||
222 | if (process_type == PROCESS_TYPE_UNKNOWN) { | |||||
223 | i_error("unknown child %s exited " | |||||
224 | "successfully", dec2str(pid)); | |||||
225 | } | |||||
226 | } else if (status == 1 && | |||||
227 | process_type == PROCESS_TYPE_SSL_PARAM) { | |||||
228 | /* kludgy. hide this failure. */ | |||||
229 | } else if (status == FATAL_DEFAULT && | |||||
230 | process->seen_fatal) {
| |||||
![]() |