csv-parser icon indicating copy to clipboard operation
csv-parser copied to clipboard

Bug: Segmentation Fault on `CSVStat` when No Rows

Open chrishappy opened this issue 3 years ago • 0 comments

Input:

myfile.csv

a

test.cpp:

#include "csv.hpp"

using namespace csv;

int main(int argc, char *argv[]) {
    
  CSVStat stats("myfile.csv");
  auto min = stats.get_mins();

  return 0;
}

Output:

$ ./fuzz_csv 
Segmentation fault
CMake Details

CMakeLists.txt

cmake_minimum_required(VERSION 3.16)
project(fuzz-csv-parser)

set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

include(FetchContent)

##################################################
# From: https://github.com/vincentlaucsb/csv-parser/issues/135#issuecomment-977528169
##################################################

# Install a header-only library from github as dependency.
FetchContent_Declare(
  csv
  GIT_REPOSITORY https://github.com/vincentlaucsb/csv-parser.git
  GIT_TAG        master
  )

FetchContent_MakeAvailable(csv)

include_directories(
  ${CMAKE_SOURCE_DIR}/${FolderSource} # Find headers from source folder
  ${csv_SOURCE_DIR}/single_include # Issue #139 for this repo
  )

##################################################
# End from
##################################################

add_executable(fuzz_csv)
target_sources(fuzz_csv
  PRIVATE
    test.cpp
)
target_link_libraries(fuzz_csv csv)

Full Command:

~/e4/build-testing$ cmake ../fuzz-csv-parser/
Building CSV library using C++17
-- Configuring done
-- Generating done
-- Build files have been written to: ~/e4/build-testing
~/e4/build-testing$ make clean all
[  5%] Building CXX object _deps/csv-build/include/internal/CMakeFiles/csv.dir/basic_csv_parser.cpp.o
[ 11%] Building CXX object _deps/csv-build/include/internal/CMakeFiles/csv.dir/col_names.cpp.o
[ 16%] Building CXX object _deps/csv-build/include/internal/CMakeFiles/csv.dir/csv_format.cpp.o
[ 22%] Building CXX object _deps/csv-build/include/internal/CMakeFiles/csv.dir/csv_reader.cpp.o
[ 27%] Building CXX object _deps/csv-build/include/internal/CMakeFiles/csv.dir/csv_reader_iterator.cpp.o
[ 33%] Building CXX object _deps/csv-build/include/internal/CMakeFiles/csv.dir/csv_row.cpp.o
[ 38%] Building CXX object _deps/csv-build/include/internal/CMakeFiles/csv.dir/csv_row_json.cpp.o
[ 44%] Building CXX object _deps/csv-build/include/internal/CMakeFiles/csv.dir/csv_stat.cpp.o
[ 50%] Building CXX object _deps/csv-build/include/internal/CMakeFiles/csv.dir/csv_utility.cpp.o
[ 55%] Linking CXX static library libcsv.a
[ 55%] Built target csv
[ 61%] Building CXX object CMakeFiles/fuzz_csv.dir/test.cpp.o
[ 66%] Linking CXX executable fuzz_csv
[ 66%] Built target fuzz_csv
[ 72%] Building CXX object CMakeFiles/fuzz_csv2.dir/test2.cpp.o
[ 77%] Linking CXX executable fuzz_csv2
[ 77%] Built target fuzz_csv2
[ 83%] Building CXX object _deps/csv-build/programs/CMakeFiles/csv_info.dir/csv_info.cpp.o
[ 88%] Linking CXX executable csv_info
[ 88%] Built target csv_info
[ 94%] Building CXX object _deps/csv-build/programs/CMakeFiles/csv_stats.dir/csv_stats.cpp.o
[100%] Linking CXX executable csv_stats
[100%] Built target csv_stats
~/e4/build-testing$ ./fuzz_csv 
Segmentation fault

chrishappy avatar Nov 21 '22 07:11 chrishappy