Seems to work, does this look right?

-Bryan.

Index: magic-load.c
===================================================================
RCS file: /cvs/src/usr.bin/file/magic-load.c,v
retrieving revision 1.25
diff -u -p -r1.25 magic-load.c
--- magic-load.c        1 Jul 2017 14:34:29 -0000       1.25
+++ magic-load.c        1 Jul 2017 18:44:42 -0000
@@ -1071,6 +1071,7 @@ magic_load(FILE *f, const char *path, in
        struct magic_line       *ml = NULL, *parent, *parent0;
        char                    *line, *tmp;
        size_t                   size;
+       ssize_t                  slen;
        u_int                    at, level, n, i;
 
        m = xcalloc(1, sizeof *m);
@@ -1084,15 +1085,11 @@ magic_load(FILE *f, const char *path, in
 
        at = 0;
        tmp = NULL;
-       while ((line = fgetln(f, &size))) {
-               if (line[size - 1] == '\n')
-                       line[size - 1] = '\0';
-               else {
-                       tmp = xmalloc(size + 1);
-                       memcpy(tmp, line, size);
-                       tmp[size] = '\0';
-                       line = tmp;
-               }
+       while ((slen = getline(&tmp, &size, f)) != -1) {
+               line = tmp;
+               if (line[slen - 1] == '\n')
+                       line[slen - 1] = '\0';
+
                at++;
 
                while (isspace((u_char)*line))

Reply via email to