From 1d4125fc9e00238a00eab9fd02ceb31bf47445b3 Mon Sep 17 00:00:00 2001 From: JasonJPu <cub1@live.ca> Date: Thu, 28 Mar 2019 23:23:45 -0400 Subject: [PATCH] Fix off by one strcpy --- Parser | Bin 14244 -> 14308 bytes parser.c | 11 ++++++----- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/Parser b/Parser index 7f0903551c6ad2b1ca45c34e133fd0d696813382..10847e0c3ae579d8d17f6bd242b9f866f8375f1a 100755 GIT binary patch delta 3255 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 A4*&oF delta 2655 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 diff --git a/parser.c b/parser.c index b346bf0..e2d6139 100644 --- a/parser.c +++ b/parser.c @@ -5,6 +5,7 @@ #include "parser.h" cons_cell* parse(char* input, int size) { + printf("%s\n", input); if (input[0] == NULL) { assert(size == 0); return NULL; @@ -22,12 +23,12 @@ cons_cell* parse(char* input, int size) { next_char++; } char buffer_next[500]; - strncpy(buffer_next, &input[next_char], size - next_char); - cons_cell* cdr_cons = parse(buffer_next, size - next_char); + strncpy(buffer_next, &input[next_char], size - next_char + 1); + cons_cell* cdr_cons = parse(buffer_next, size - next_char + 1); return create_cons_cell(car_cons, cdr_cons); } else { int first_space_idx = 0; - while (input[first_space_idx] != " " && input[first_space_idx] != NULL) + while (input[first_space_idx] != ' ' && input[first_space_idx] != NULL) first_space_idx++; char buff_first[500]; @@ -39,8 +40,8 @@ cons_cell* parse(char* input, int size) { next_char++; } - strncpy(buff_other, &input[next_char], size - next_char); - cons_cell* cdr_cons = parse(buff_other, size-next_char); + strncpy(buff_other, &input[next_char], size - next_char + 1); + cons_cell* cdr_cons = parse(buff_other, size - next_char + 1); car_cons->cdr = cdr_cons; return car_cons; } -- GitLab