Skip to content

SEGV with unsupported type #384

Open
@PedroTadim

Description

@PedroTadim

Compile, link and run this modified example program, while running the input from this file: issue.zip

#include <iostream>
#include <fstream>

#include <clickhouse/client.h>

using namespace clickhouse;

int main()
{
	Client client(ClientOptions().SetHost("localhost"));

	std::ifstream infile("<path to file>");
	std::string line;
	while (std::getline(infile, line))
	{
		try {
			client.Execute(line);
		} catch (const std::exception & e) {
		}
	}
	return 0;
}

A SEGV will happen:

Program received signal SIGSEGV, Segmentation fault.
0x00005555556c2a0c in clickhouse::TypeParser::Parse (this=0x7fffffffbf10, type=0x5555559b87c0) at contribs/clickhouse-cpp/clickhouse/types/type_parser.cpp:186
186	                type_ = open_elements_.top();
(gdb) bt
#0  0x00005555556c2a0c in clickhouse::TypeParser::Parse (this=0x7fffffffbf10, type=0x5555559b87c0) at contribs/clickhouse-cpp/clickhouse/types/type_parser.cpp:186
#1  0x00005555556c330c in clickhouse::ParseTypeName (type_name="es=16, max_dynamic_paths=256))", '\000' <repeats 16 times>, "\200\002\000\001\000\000\000\000\000\000\000 \002\026Array(Nullable(Int64))\\Tuple(Nullable(String), Nulla")
    at contribs/clickhouse-cpp/clickhouse/types/type_parser.cpp:305
#2  0x0000555555650305 in clickhouse::CreateColumnByType (
    type_name="es=16, max_dynamic_paths=256))", '\000' <repeats 16 times>, "\200\002\000\001\000\000\000\000\000\000\000 \002\026Array(Nullable(Int64))\\Tuple(Nullable(String), Nulla", settings=...)
    at contribs/clickhouse-cpp/clickhouse/columns/factory.cpp:268
#3  0x0000555555635184 in clickhouse::Client::Impl::ReadBlock (this=0x5555559b8d80, input=..., block=0x7fffffffc120) at contribs/clickhouse-cpp/clickhouse/client.cpp:639
#4  0x0000555555635642 in clickhouse::Client::Impl::ReceiveData (this=0x5555559b8d80) at contribs/clickhouse-cpp/clickhouse/client.cpp:668
#5  0x00005555556346c1 in clickhouse::Client::Impl::ReceivePacket (this=0x5555559b8d80, server_packet=0x0) at contribs/clickhouse-cpp/clickhouse/client.cpp:451
#6  0x0000555555633672 in clickhouse::Client::Impl::ExecuteQuery (this=0x5555559b8d80, query=...) at contribs/clickhouse-cpp/clickhouse/client.cpp:284
#7  0x0000555555637984 in clickhouse::Client::Execute (this=0x7fffffffcbd0, query=...) at contribs/clickhouse-cpp/clickhouse/client.cpp:1010

A proper error message should be thrown when a type is not supported instead of crashing

Metadata

Metadata

Assignees

Labels

bugSomething isn't workingneed-infoAwaiting extra info from community/issue creator

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions