From f03549016cdf5d4af3cb818c0764de52ffb7d291 Mon Sep 17 00:00:00 2001 From: DavidKorczynski Date: Sat, 15 May 2021 04:32:19 +0100 Subject: [PATCH] sql-parser: initial integration (#5276) * initial integration of sql-parser. * fuzzer simplification. * Updated sql-parse following maintainers accept. * nit --- projects/sql-parser/Dockerfile | 23 +++++++++++++++++++++++ projects/sql-parser/build.sh | 22 ++++++++++++++++++++++ projects/sql-parser/fuzz_sql_parse.cpp | 26 ++++++++++++++++++++++++++ projects/sql-parser/project.yaml | 6 ++++++ 4 files changed, 77 insertions(+) create mode 100755 projects/sql-parser/Dockerfile create mode 100755 projects/sql-parser/build.sh create mode 100644 projects/sql-parser/fuzz_sql_parse.cpp create mode 100755 projects/sql-parser/project.yaml diff --git a/projects/sql-parser/Dockerfile b/projects/sql-parser/Dockerfile new file mode 100755 index 000000000..b68268bfb --- /dev/null +++ b/projects/sql-parser/Dockerfile @@ -0,0 +1,23 @@ +# Copyright 2021 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +################################################################################ + +FROM gcr.io/oss-fuzz-base/base-builder +RUN apt-get update && apt-get install -y make cmake +RUN git clone https://github.com/hyrise/sql-parser + +WORKDIR $SRC +COPY build.sh $SRC/ +COPY fuzz_sql_parse.cpp $SRC/sql-parser/fuzz_sql_parse.cpp diff --git a/projects/sql-parser/build.sh b/projects/sql-parser/build.sh new file mode 100755 index 000000000..c795dd517 --- /dev/null +++ b/projects/sql-parser/build.sh @@ -0,0 +1,22 @@ +#!/bin/bash -eu +# Copyright 2021 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +################################################################################ + +cd sql-parser +sed 's/static ?= no/LIB_CFLAGS += ${CXXFLAGS}\nstatic ?= no/g' -i Makefile +make static=yes +$CXX $CXXFLAGS $LIB_FUZZING_ENGINE \ + fuzz_sql_parse.cpp libsqlparser.a -I./src -o $OUT/fuzz_sql_parse diff --git a/projects/sql-parser/fuzz_sql_parse.cpp b/projects/sql-parser/fuzz_sql_parse.cpp new file mode 100644 index 000000000..1fb59c92a --- /dev/null +++ b/projects/sql-parser/fuzz_sql_parse.cpp @@ -0,0 +1,26 @@ +/* Copyright 2021 Google LLC + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +#include +#include "SQLParser.h" + +using namespace hsql; + +extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) { + std::string input(reinterpret_cast(data), size); + SQLParserResult res; + SQLParser::parse(input, &res); + return 0; +} diff --git a/projects/sql-parser/project.yaml b/projects/sql-parser/project.yaml new file mode 100755 index 000000000..0e1bf5af9 --- /dev/null +++ b/projects/sql-parser/project.yaml @@ -0,0 +1,6 @@ +homepage: "https://github.com/hyrise/sql-parser" +main_repo: "https://github.com/hyrise/sql-parser" +primary_contact: "marcel.weisgut@hpi.de" +language: c++ +auto_ccs: + - "david@adalogics.com"