return false;
}
- *list = realloc(*list, sizeof(struct report_file)*(*list_count + 1));
+ struct report_file *tmp_list = realloc(*list, sizeof(struct report_file)*(*list_count + 1));
+ if (tmp_list == NULL) {
+ _E("Out of memory");
+ return false;
+ }
+ *list = tmp_list;
(*list)[*list_count].file_name = strdup(ep->d_name);
(*list)[*list_count].file_path = strdup(file_path);
(*list)[*list_count].ctime = st.st_ctim;
if (!diagnostics_call_parse_options(fd, params, params_size, &dco))
return;
- if ((dco.last_set && (dco.from_set || dco.from_set)) || (dco.to_set && !dco.from_set)) {
+ if ((dco.last_set && (dco.from_set || dco.to_set)) || (dco.to_set && !dco.from_set)) {
_E("Incorrect parameters set");
dprintf(fd, "Incorrect parameters set.\n");
return;
if ((lock_fd = lock_dir(crash_dump_path, false)) < 0)
return false;
if (!rename(from_path, cinfo->result_path)) {
- chmod(cinfo->result_path, DEFAULT_REPORT_PERM);
+ if (chmod(cinfo->result_path, DEFAULT_REPORT_PERM) != 0)
+ _E("Error changing permission for %s to %d: %m", cinfo->result_path, DEFAULT_REPORT_PERM);
clean_dump();
} else {
_E("Failed to move %s to %s", from_path, cinfo->result_path);
return NULL;
}
- char *chunk = strtok(str_tmp, " ");
+ char *tmpptr = NULL;
+ char *chunk = strtok_r(str_tmp, " ", &tmpptr);
*size = 0;
while (chunk != NULL) {
result = result_tmp;
result[(*size)++] = chunk_copy;
- chunk = strtok(NULL, " ");
+ chunk = strtok_r(NULL, " ", &tmpptr);
}
char **result_tmp = realloc(result, (*size + 1) * sizeof(char *));
return false;
}
- chmod(path, mode); // Fixup permissions for directories created with bad umask
+ if (chmod(path, mode) != 0) // Fixup permissions for directories created with bad umask
+ _E("Error changing permission for %s to %d: %m", path, mode);
if (r >= 0)
return true;