From 13a965954523b8ee0a9633e02697f909c3d31a0e Mon Sep 17 00:00:00 2001 From: Thomas Schmucker Date: Fri, 26 Jun 2020 14:08:23 +0200 Subject: Verhindere, dass eine manipulierte Eingabe unsere String-Darstellung im Speicher kaputt macht. Hierfür werden Null-Bytes aus der Eingabe ausgefiltert und nicht abgespeichert. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- csv.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) (limited to 'csv.c') diff --git a/csv.c b/csv.c index edc9c82..8e4dfa2 100644 --- a/csv.c +++ b/csv.c @@ -345,7 +345,9 @@ csv_read(csv_t *csv, FILE *in) state = STATE_QUOTED_FIELD; } else { - csv_string_append(&csv->csv_string, ch, csv->csv_options); + if ( ch != '\0' ) { + csv_string_append(&csv->csv_string, ch, csv->csv_options); + } state = STATE_SIMPLE_FIELD; } break; @@ -383,7 +385,9 @@ csv_read(csv_t *csv, FILE *in) } } else { - csv_string_append(&csv->csv_string, ch, csv->csv_options); + if ( ch != '\0' ) { + csv_string_append(&csv->csv_string, ch, csv->csv_options); + } } } while ( state == STATE_QUOTED_FIELD ); break; @@ -408,7 +412,9 @@ csv_read(csv_t *csv, FILE *in) state = STATE_END_LINE; } else { - csv_string_append(&csv->csv_string, ch, csv->csv_options); + if ( ch != '\0' ) { + csv_string_append(&csv->csv_string, ch, csv->csv_options); + } } } while ( state == STATE_SIMPLE_FIELD ); break; -- cgit v1.3