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:
Topi Miettinen
2019-02-02 16:25:32 +02:00
parent cbed254f96
commit a21760454d
3 changed files with 5 additions and 5 deletions
+2 -2
View File
@@ -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. */
+1 -1
View File
@@ -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
View File
@@ -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)