Detect file truncation earlier in a few places
Users of read_one_line_file() for APIVFS entries are ignored as they are assumed to never get truncated.
This commit is contained in:
+2
-2
@@ -469,11 +469,11 @@ int detect_container(void) {
|
||||
/* Otherwise, PID 1 might have dropped this information into a file in /run. This is better than accessing
|
||||
* /proc/1/environ, since we don't need CAP_SYS_PTRACE for that. */
|
||||
r = read_one_line_file("/run/systemd/container", &m);
|
||||
if (r >= 0) {
|
||||
if (r > 0) {
|
||||
e = m;
|
||||
goto translate_name;
|
||||
}
|
||||
if (r != -ENOENT)
|
||||
if (!IN_SET(r, -ENOENT, 0))
|
||||
return log_debug_errno(r, "Failed to read /run/systemd/container: %m");
|
||||
|
||||
/* Fallback for cases where PID 1 was not systemd (for example, cases where init=/bin/sh is used. */
|
||||
|
||||
@@ -707,7 +707,7 @@ int dynamic_user_lookup_uid(Manager *m, uid_t uid, char **ret) {
|
||||
|
||||
xsprintf(lock_path, "/run/systemd/dynamic-uid/" UID_FMT, uid);
|
||||
r = read_one_line_file(lock_path, &user);
|
||||
if (r == -ENOENT)
|
||||
if (IN_SET(r, -ENOENT, 0))
|
||||
return -ESRCH;
|
||||
if (r < 0)
|
||||
return r;
|
||||
|
||||
+2
-2
@@ -147,8 +147,8 @@ static int load_state(Context *c, const struct rfkill_event *event) {
|
||||
return r;
|
||||
|
||||
r = read_one_line_file(state_file, &value);
|
||||
if (r == -ENOENT) {
|
||||
/* No state file? Then save the current state */
|
||||
if (IN_SET(r, -ENOENT, 0)) {
|
||||
/* No state file or it's truncated? Then save the current state */
|
||||
|
||||
r = write_string_file(state_file, one_zero(event->soft), WRITE_STRING_FILE_CREATE|WRITE_STRING_FILE_ATOMIC);
|
||||
if (r < 0)
|
||||
|
||||
Reference in New Issue
Block a user