diff options
author | 2016-12-09 10:36:42 -0500 | |
---|---|---|
committer | 2016-12-09 07:36:42 -0800 | |
commit | ed2ee1adacc6ff6647d72bbe1a08ad2404869f1b (patch) | |
tree | 00376703dde4f5f75b8b535f1197a51220df72d2 /projects/gnutls/gnutls_x509_parser_fuzzer.cc | |
parent | 2dfb5a675e10084af5fb8471a12c51c2cc886de1 (diff) |
[In progress] Fuzzer for GNUTLS (#135)
* First cut at gnutls. Doesn't actually find coverage.
* link everything right
* pipes are not sockets
* send not write
* these are not used
* stick this here
* this doesn't exit
* remove jenkinsfile
* move to the right dir
* project file
* update for more recent conventions
* ugh, typo
* new lib
* docs take forever
* name it client fuzzer
* stick a cert store on there!
* add a timeout, ugh
* Shtudown the right side instead of using a timeout
* Use boringssl's test corpus
* simplify grabbing the tarballs
* statically link things. pthread is still dynamically linked because I was not able to make it work
* Added an x509 parser fuzzer
* update for the lastest convention
Diffstat (limited to 'projects/gnutls/gnutls_x509_parser_fuzzer.cc')
-rw-r--r-- | projects/gnutls/gnutls_x509_parser_fuzzer.cc | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/projects/gnutls/gnutls_x509_parser_fuzzer.cc b/projects/gnutls/gnutls_x509_parser_fuzzer.cc new file mode 100644 index 00000000..28dc3397 --- /dev/null +++ b/projects/gnutls/gnutls_x509_parser_fuzzer.cc @@ -0,0 +1,47 @@ +/* +# Copyright 2016 Google Inc. +# +# 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 <assert.h> +#include <stdint.h> + +#include <gnutls/gnutls.h> +#include <gnutls/x509.h> + + +extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) { + gnutls_datum_t raw; + gnutls_datum_t out; + gnutls_x509_crt_t crt; + int ret; + + raw.data = (unsigned char *)data; + raw.size = size; + + ret = gnutls_x509_crt_init(&crt); + assert(ret >= 0); + + ret = gnutls_x509_crt_import(crt, &raw, GNUTLS_X509_FMT_DER); + if (ret >= 0) { + ret = gnutls_x509_crt_print(crt, GNUTLS_CRT_PRINT_FULL, &out); + assert(ret >= 0); + gnutls_free(out.data); + } + + gnutls_x509_crt_deinit(crt); + return 0; +} |