diff options
| author | Thomas Schmucker <ts@its1.de> | 2020-06-26 14:08:23 +0200 |
|---|---|---|
| committer | Thomas Schmucker <ts@its1.de> | 2020-06-26 14:08:23 +0200 |
| commit | 13a965954523b8ee0a9633e02697f909c3d31a0e (patch) | |
| tree | ac97349a16029ac1924d708574cf437dc1fd84e5 /csv.c | |
| parent | cf60629baa28b65fe5b663c301003f7b96c40a7d (diff) | |
| download | libcsv-13a965954523b8ee0a9633e02697f909c3d31a0e.tar.gz libcsv-13a965954523b8ee0a9633e02697f909c3d31a0e.tar.bz2 libcsv-13a965954523b8ee0a9633e02697f909c3d31a0e.zip | |
Verhindere, dass eine manipulierte Eingabe unsere String-Darstellung im
Speicher kaputt macht. Hierfür werden Null-Bytes aus der Eingabe
ausgefiltert und nicht abgespeichert.
Diffstat (limited to 'csv.c')
| -rw-r--r-- | csv.c | 12 |
1 files changed, 9 insertions, 3 deletions
| @@ -345,7 +345,9 @@ csv_read(csv_t *csv, FILE *in) | |||
| 345 | state = STATE_QUOTED_FIELD; | 345 | state = STATE_QUOTED_FIELD; |
| 346 | } | 346 | } |
| 347 | else { | 347 | else { |
| 348 | csv_string_append(&csv->csv_string, ch, csv->csv_options); | 348 | if ( ch != '\0' ) { |
| 349 | csv_string_append(&csv->csv_string, ch, csv->csv_options); | ||
| 350 | } | ||
| 349 | state = STATE_SIMPLE_FIELD; | 351 | state = STATE_SIMPLE_FIELD; |
| 350 | } | 352 | } |
| 351 | break; | 353 | break; |
| @@ -383,7 +385,9 @@ csv_read(csv_t *csv, FILE *in) | |||
| 383 | } | 385 | } |
| 384 | } | 386 | } |
| 385 | else { | 387 | else { |
| 386 | csv_string_append(&csv->csv_string, ch, csv->csv_options); | 388 | if ( ch != '\0' ) { |
| 389 | csv_string_append(&csv->csv_string, ch, csv->csv_options); | ||
| 390 | } | ||
| 387 | } | 391 | } |
| 388 | } while ( state == STATE_QUOTED_FIELD ); | 392 | } while ( state == STATE_QUOTED_FIELD ); |
| 389 | break; | 393 | break; |
| @@ -408,7 +412,9 @@ csv_read(csv_t *csv, FILE *in) | |||
| 408 | state = STATE_END_LINE; | 412 | state = STATE_END_LINE; |
| 409 | } | 413 | } |
| 410 | else { | 414 | else { |
| 411 | csv_string_append(&csv->csv_string, ch, csv->csv_options); | 415 | if ( ch != '\0' ) { |
| 416 | csv_string_append(&csv->csv_string, ch, csv->csv_options); | ||
| 417 | } | ||
| 412 | } | 418 | } |
| 413 | } while ( state == STATE_SIMPLE_FIELD ); | 419 | } while ( state == STATE_SIMPLE_FIELD ); |
| 414 | break; | 420 | break; |
