mirror of
https://github.com/dashpay/dash.git
synced 2024-12-25 20:12:57 +01:00
Merge #18682: fuzz: http_request workaround for libevent < 2.1.1
6f8b498d186df5aa08dbb9ca8fdeab6652f1db5e fuzz: http_request workaround for libevent < 2.1.1 (Sebastian Falbesoner)
Pull request description:
The fuzz test `http_request` calls the following two internal libevent functions:
* `evhttp_parse_firstline_`
* `evhttp_parse_headers_`
Before libevent 2.1.1 however, internal functions names didn't end with an underscore (see libevent commit 8ac3c4c25b
and [Changelog for 2.1.1.-alpha](https://github.com/libevent/libevent/blob/master/ChangeLog#L1830) when the change was first mentioned) hence the build fails with a linking error.
This PR adds a preprocessor workaround to the test that checks for the libevent version (via ~`_EVENT_NUMERIC_VERSION`~ `LIBEVENT_VERSION_NUMBER`) and creates wrapper functions mapping to naming scheme without underscore in case the version is older than 2.1.1.
Tested with Ubuntu Xenial 16.04.6 LTS and clang-8.
ACKs for top commit:
hebasto:
ACK 6f8b498d186df5aa08dbb9ca8fdeab6652f1db5e, tested on xenial:
Tree-SHA512: 3b9e0147b8aea22e417d418e3b6d4905f5be131c2b0ae4b0f8b9411c5606d2e22f1b23e1ecc6980ecab907c61404de09e588aae1ac43cf70cf9e8d006bbdee73
This commit is contained in:
parent
30e75239e8
commit
f9e0773a9d
@ -10,6 +10,7 @@
|
||||
#include <util/strencodings.h>
|
||||
|
||||
#include <event2/buffer.h>
|
||||
#include <event2/event.h>
|
||||
#include <event2/http.h>
|
||||
#include <event2/http_struct.h>
|
||||
|
||||
@ -18,8 +19,24 @@
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
// workaround for libevent versions before 2.1.1,
|
||||
// when internal functions didn't have underscores at the end
|
||||
#if LIBEVENT_VERSION_NUMBER < 0x02010100
|
||||
extern "C" int evhttp_parse_firstline(struct evhttp_request*, struct evbuffer*);
|
||||
extern "C" int evhttp_parse_headers(struct evhttp_request*, struct evbuffer*);
|
||||
inline int evhttp_parse_firstline_(struct evhttp_request* r, struct evbuffer* b)
|
||||
{
|
||||
return evhttp_parse_firstline(r, b);
|
||||
}
|
||||
inline int evhttp_parse_headers_(struct evhttp_request* r, struct evbuffer* b)
|
||||
{
|
||||
return evhttp_parse_headers(r, b);
|
||||
}
|
||||
#else
|
||||
extern "C" int evhttp_parse_firstline_(struct evhttp_request*, struct evbuffer*);
|
||||
extern "C" int evhttp_parse_headers_(struct evhttp_request*, struct evbuffer*);
|
||||
#endif
|
||||
|
||||
std::string RequestMethodString(HTTPRequest::RequestMethod m);
|
||||
|
||||
FUZZ_TARGET(http_request)
|
||||
|
Loading…
Reference in New Issue
Block a user