From 3831700b4d13172d46a0dd7334a8541b9b90409c Mon Sep 17 00:00:00 2001 From: DavidKorczynski Date: Tue, 9 Mar 2021 14:30:58 +0000 Subject: [PATCH] [gpac] initial integration (#5289) --- projects/gpac/Dockerfile | 23 +++++++++++++++++++++++ projects/gpac/build.sh | 25 +++++++++++++++++++++++++ projects/gpac/fuzz_parse.c | 36 ++++++++++++++++++++++++++++++++++++ projects/gpac/project.yaml | 6 ++++++ 4 files changed, 90 insertions(+) create mode 100755 projects/gpac/Dockerfile create mode 100755 projects/gpac/build.sh create mode 100644 projects/gpac/fuzz_parse.c create mode 100755 projects/gpac/project.yaml diff --git a/projects/gpac/Dockerfile b/projects/gpac/Dockerfile new file mode 100755 index 000000000..cf7fc8043 --- /dev/null +++ b/projects/gpac/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 build-essential pkg-config libz-dev +RUN git clone https://github.com/gpac/gpac + +WORKDIR $SRC +COPY build.sh $SRC/ +COPY fuzz_parse.c $SRC/ diff --git a/projects/gpac/build.sh b/projects/gpac/build.sh new file mode 100755 index 000000000..904f5f234 --- /dev/null +++ b/projects/gpac/build.sh @@ -0,0 +1,25 @@ +#!/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 gpac +./configure --static-build --extra-cflags="${CFLAGS}" --extra-ldflags="${CFLAGS}" +make +cp $SRC/fuzz_parse.c . + +$CC $CFLAGS $LIB_FUZZING_ENGINE fuzz_parse.c -o $OUT/fuzz_parse \ + -I./include -I./ ./bin/gcc/libgpac_static.a \ + -lm -lz -lpthread -DGPAC_HAVE_CONFIG_H diff --git a/projects/gpac/fuzz_parse.c b/projects/gpac/fuzz_parse.c new file mode 100644 index 000000000..b7c9ac9a6 --- /dev/null +++ b/projects/gpac/fuzz_parse.c @@ -0,0 +1,36 @@ +/* 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 + +#include +#include + +int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) { + char filename[256]; + sprintf(filename, "/tmp/libfuzzer.%d", getpid()); + + FILE *fp = fopen(filename, "wb"); + if (!fp) { + return 0; + } + fwrite(data, size, 1, fp); + fclose(fp); + + GF_ISOFile *movie = NULL; + movie = gf_isom_open_file(filename, GF_ISOM_OPEN_READ_DUMP, NULL); + if (movie != NULL) { + gf_isom_close(movie); + } + unlink(filename); + return 0; +} diff --git a/projects/gpac/project.yaml b/projects/gpac/project.yaml new file mode 100755 index 000000000..1229d1260 --- /dev/null +++ b/projects/gpac/project.yaml @@ -0,0 +1,6 @@ +homepage: "https://gpac.wp.imt.fr/" +main_repo: "https://github.com/gpac/gpac" +primary_contact: "project.gpac@gmail.com" +language: c +auto_ccs: + - "david@adalogics.com"