print_file_contents: allocate enough to include \0

related to #331
Previously, if max_chars was read, the null byte would be written
past the end of buf.
This commit is contained in:
Sam Newbold 2019-06-10 16:29:37 +02:00
parent 9b5f6ae5f4
commit 300b31b2df
No known key found for this signature in database
GPG Key ID: 32C9A0D381EA1F29
3 changed files with 8 additions and 2 deletions

View File

@ -23,7 +23,7 @@ static void *scalloc(size_t size) {
void print_file_contents(yajl_gen json_gen, char *buffer, const char *title, const char *path, const char *format, const char *format_bad, const int max_chars) {
const char *walk = format;
char *outwalk = buffer;
char *buf = scalloc(max_chars * sizeof(char));
char *buf = scalloc(max_chars * sizeof(char) + 1);
int n = -1;
int fd = open(path, O_RDONLY);

View File

@ -1 +1 @@
contents | NONEXISTANT - 2: No such file or directory
contents | con | NONEXISTANT - 2: No such file or directory

View File

@ -3,12 +3,18 @@ general {
}
order += "read_file EXISTING"
order += "read_file TRUNCATED"
order += "read_file NONEXISTANT"
read_file EXISTING {
path = "testcases/025-file-contents/short.txt"
}
read_file TRUNCATED {
path = "testcases/025-file-contents/short.txt"
max_characters = 3
}
read_file NONEXISTANT {
path = "testcases/025-file-contents/nonexistant"
}