| 272 | void libhtprsFreeFuzzRun(void *t); |
| 273 | |
| 274 | static int bstrDiff(void* rsbstr, bstr * cbstr, const char *field) { |
| 275 | if (rsbstr == NULL && cbstr == NULL) { |
| 276 | return 0; |
| 277 | } |
| 278 | if (rsbstr == NULL) { |
| 279 | printf("Assertion failure: Bstr %s rust is zero\n", field); |
| 280 | return 1; |
| 281 | } |
| 282 | if (cbstr == NULL) { |
| 283 | printf("Assertion failure: Bstr %s C is zero\n", field); |
| 284 | return 1; |
| 285 | } |
| 286 | size_t len = bstr_len(cbstr); |
| 287 | uint8_t * rsptr = bstr_ptr_rs(rsbstr); |
| 288 | uint8_t * cptr = bstr_ptr(cbstr); |
| 289 | if (bstr_len_rs(rsbstr) != len) { |
| 290 | fprint_raw_data(stdout, "c=", cptr, len); |
| 291 | fprint_raw_data(stdout, "rust=", rsptr, bstr_len_rs(rsbstr)); |
| 292 | printf("Assertion failure: Bstr %s lengths are different %zu vs %zu\n", field, bstr_len_rs(rsbstr), len); |
| 293 | return 1; |
| 294 | } |
| 295 | for (size_t i=0; i<len; i++) { |
| 296 | if (rsptr[i] != cptr[i]) { |
| 297 | fprint_raw_data(stdout, "c=", cptr, len); |
| 298 | fprint_raw_data(stdout, "rust=", rsptr, bstr_len_rs(rsbstr)); |
| 299 | printf("Assertion failure: Bstr %s index %zu are different %02x vs %02x\n", field, i, rsptr[i], cptr[i]); |
| 300 | return 1; |
| 301 | } |
| 302 | } |
| 303 | return 0; |
| 304 | } |
| 305 | |
| 306 | static int txDiff(void* rstx, htp_tx_t * ctx) { |
| 307 | if (bstrDiff(htp_tx_request_method(rstx), ctx->request_method, "methods")) { |
no test coverage detected