journal: properly handle an unexpectedly missing field
parse_field() checks if the field has the expected format, and returns 0 if it doesn't. In that case, value and size are not set. Nevertheless, we would try to continue, and hit an assert in safe_atou64. This case shouldn't happen, unless sd_j_get_data is borked, so cleanly assert that we got the expected field. Also, oom is the only way that parse_field can fail, which we log already. Instead of outputting a debug statement and carrying on, treat oom as fatal.
This commit is contained in:
@@ -435,8 +435,9 @@ static int output_verbose(
|
||||
|
||||
r = parse_field(data, length, "_SOURCE_REALTIME_TIMESTAMP=", &value, &size);
|
||||
if (r < 0)
|
||||
log_debug_errno(r, "_SOURCE_REALTIME_TIMESTAMP invalid: %m");
|
||||
return r;
|
||||
else {
|
||||
assert(r > 0);
|
||||
r = safe_atou64(value, &realtime);
|
||||
if (r < 0)
|
||||
log_debug_errno(r, "Failed to parse realtime timestamp: %m");
|
||||
|
||||
Reference in New Issue
Block a user