etc~ scripts and random things |
| git clone https://github.com/djnnvx/etc.git |
| log | files | refs | archive |
fuzz_ocsp.c (1119B)
1 /* 2 * OCSP response parsing: dirmngr fetches these over HTTP, so it is a remote 3 * attacker-controlled path. ksba_ocsp_parse_response takes a raw buffer and 4 * parses eagerly (ocsp.c + time.c); the accessors drain the remainder. 5 */ 6 #include "harness.h" 7 8 static int fuzz_one(const uint8_t *data, size_t size) 9 { 10 ksba_ocsp_t ocsp; 11 ksba_ocsp_response_status_t rstatus; 12 13 if (ksba_ocsp_new(&ocsp)) 14 return 0; 15 16 if (!ksba_ocsp_parse_response(ocsp, data, size, &rstatus)) { 17 char *name = NULL; 18 ksba_sexp_t kid = NULL; 19 ksba_isotime_t produced_at; 20 int i; 21 22 if (!ksba_ocsp_get_responder_id(ocsp, &name, &kid)) { 23 ksba_free(name); 24 ksba_free(kid); 25 } 26 ksba_free(ksba_ocsp_get_sig_val(ocsp, produced_at)); 27 (void)ksba_ocsp_get_digest_algo(ocsp); /* const, do not free */ 28 29 for (i = 0; i < KSBA_FUZZ_MAXITER; i++) { 30 ksba_cert_t c = ksba_ocsp_get_cert(ocsp, i); 31 if (!c) 32 break; 33 ksba_cert_release(c); 34 } 35 } 36 37 ksba_ocsp_release(ocsp); 38 return 0; 39 }