chiark / gitweb /
fileio: minor tweak to executable_is_script()
authorLennart Poettering <lennart@poettering.net>
Sat, 30 Dec 2017 14:44:29 +0000 (15:44 +0100)
committerSven Eden <yamakuzure@gmx.net>
Wed, 30 May 2018 05:49:53 +0000 (07:49 +0200)
If read_line() returns ENOBFUS this means the line was overly long. When
we use this for checking whether an executable is a script, then this
shouldn't be propagated as-is, but simply as "this is not a script".

src/basic/fileio.c

index 8b00fc817b7a45fd017413b819d72cbfbed241e3..8906c0b829d9858f9ae2902991064c740bb55a1e 100644 (file)
@@ -929,14 +929,16 @@ int write_env_file(const char *fname, char **l) {
 }
 
 int executable_is_script(const char *path, char **interpreter) {
-        int r;
         _cleanup_free_ char *line = NULL;
-        int len;
+        size_t len;
         char *ans;
+        int r;
 
         assert(path);
 
         r = read_one_line_file(path, &line);
+        if (r == -ENOBUFS) /* First line overly long? if so, then it's not a script */
+                return 0;
         if (r < 0)
                 return r;