mirror of
https://github.com/systemd/systemd.git
synced 2025-01-26 14:04:03 +03:00
coredumpctl: check return value
retrieve() allocates memory, so it may fail. Coverity CID#1402338.
This commit is contained in:
parent
eba048bb6e
commit
2d0a880fea
@ -738,9 +738,22 @@ static int save_core(sd_journal *j, FILE *file, char **path, bool *unlink_temp)
|
|||||||
|
|
||||||
/* Look for a coredump on disk first. */
|
/* Look for a coredump on disk first. */
|
||||||
r = sd_journal_get_data(j, "COREDUMP_FILENAME", (const void**) &data, &len);
|
r = sd_journal_get_data(j, "COREDUMP_FILENAME", (const void**) &data, &len);
|
||||||
if (r == 0)
|
if (r == 0) {
|
||||||
retrieve(data, len, "COREDUMP_FILENAME", &filename);
|
r = retrieve(data, len, "COREDUMP_FILENAME", &filename);
|
||||||
else {
|
if (r < 0)
|
||||||
|
return r;
|
||||||
|
assert(r > 0);
|
||||||
|
|
||||||
|
if (access(filename, R_OK) < 0)
|
||||||
|
return log_error_errno(errno, "File \"%s\" is not readable: %m", filename);
|
||||||
|
|
||||||
|
if (path && !endswith(filename, ".xz") && !endswith(filename, ".lz4")) {
|
||||||
|
*path = TAKE_PTR(filename);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
} else {
|
||||||
if (r != -ENOENT)
|
if (r != -ENOENT)
|
||||||
return log_error_errno(r, "Failed to retrieve COREDUMP_FILENAME field: %m");
|
return log_error_errno(r, "Failed to retrieve COREDUMP_FILENAME field: %m");
|
||||||
/* Check that we can have a COREDUMP field. We still haven't set a high
|
/* Check that we can have a COREDUMP field. We still haven't set a high
|
||||||
@ -754,17 +767,6 @@ static int save_core(sd_journal *j, FILE *file, char **path, bool *unlink_temp)
|
|||||||
return log_error_errno(r, "Failed to retrieve COREDUMP field: %m");
|
return log_error_errno(r, "Failed to retrieve COREDUMP field: %m");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (filename) {
|
|
||||||
if (access(filename, R_OK) < 0)
|
|
||||||
return log_error_errno(errno, "File \"%s\" is not readable: %m", filename);
|
|
||||||
|
|
||||||
if (path && !endswith(filename, ".xz") && !endswith(filename, ".lz4")) {
|
|
||||||
*path = TAKE_PTR(filename);
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (path) {
|
if (path) {
|
||||||
const char *vt;
|
const char *vt;
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user