]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
binfmt: fgets() excorcism
authorLennart Poettering <lennart@poettering.net>
Thu, 18 Oct 2018 11:33:19 +0000 (13:33 +0200)
committerLennart Poettering <lennart@poettering.net>
Thu, 18 Oct 2018 11:33:22 +0000 (13:33 +0200)
Also, let's not claim we ignored errors when we don't.

src/binfmt/binfmt.c

index 0e5ca1a7e87b30070e91ab4bb71121266ff1dd10..fb8cf13f239cd21af469acd9c6fadc3845d403a7 100644 (file)
@@ -73,25 +73,25 @@ static int apply_file(const char *path, bool ignore_enoent) {
                 if (ignore_enoent && r == -ENOENT)
                         return 0;
 
-                return log_error_errno(r, "Failed to open file '%s', ignoring: %m", path);
+                return log_error_errno(r, "Failed to open file '%s': %m", path);
         }
 
         log_debug("apply: %s", path);
         for (;;) {
-                char l[LINE_MAX], *p;
+                _cleanup_free_ char *line = NULL;
+                char *p;
                 int k;
 
-                if (!fgets(l, sizeof(l), f)) {
-                        if (feof(f))
-                                break;
-
-                        return log_error_errno(errno, "Failed to read file '%s', ignoring: %m", path);
-                }
+                k = read_line(f, LONG_LINE_MAX, &line);
+                if (k < 0)
+                        return log_error_errno(k, "Failed to read file '%s': %m", path);
+                if (k == 0)
+                        break;
 
-                p = strstrip(l);
-                if (!*p)
+                p = strstrip(line);
+                if (isempty(p))
                         continue;
-                if (strchr(COMMENTS "\n", *p))
+                if (strchr(COMMENTS, p[0]))
                         continue;
 
                 k = apply_rule(p);