diff options
author | David Oberhollenzer <david.oberhollenzer@sigma-star.at> | 2019-11-23 17:17:54 +0100 |
---|---|---|
committer | David Oberhollenzer <david.oberhollenzer@sigma-star.at> | 2019-11-23 17:17:54 +0100 |
commit | 2eaf7d3ef05047dd346dacafb268b9bc67f7ba56 (patch) | |
tree | 9bcfbe0c1bff34c21f2608e11e9650aa0ba788d1 | |
parent | 687b880ddb0d67253d8903f92910a1ca3bea65ef (diff) |
Fix: add missing null-terminator in getline implementation
Signed-off-by: David Oberhollenzer <david.oberhollenzer@sigma-star.at>
-rw-r--r-- | lib/compat/getline.c | 10 | ||||
-rw-r--r-- | tests/fstree_from_file.c | 1 |
2 files changed, 11 insertions, 0 deletions
diff --git a/lib/compat/getline.c b/lib/compat/getline.c index f330c6d..e63c50e 100644 --- a/lib/compat/getline.c +++ b/lib/compat/getline.c @@ -43,6 +43,16 @@ ssize_t getline(char **line, size_t *n, FILE *fp) buffer[len++] = c; } while (c != '\n'); + if (len == cap) { + new = realloc(buffer, cap ? cap * 2 : 32); + if (new == NULL) + return -1; + + buffer = new; + } + + buffer[len] = '\0'; + *line = buffer; *n = len; return len; diff --git a/tests/fstree_from_file.c b/tests/fstree_from_file.c index 4df0a4e..a0b6b2d 100644 --- a/tests/fstree_from_file.c +++ b/tests/fstree_from_file.c @@ -90,6 +90,7 @@ int main(void) assert(n->uid == 2); assert(n->gid == 3); assert(strcmp(n->name, "slink") == 0); + fprintf(stderr, "'%s'\n", n->data.slink_target); assert(strcmp(n->data.slink_target, "slinktarget") == 0); n = n->next; |