summaryrefslogtreecommitdiff
path: root/lib/multi.c
diff options
context:
space:
mode:
authorDaniel Stenberg <daniel@haxx.se>2021-01-19 08:23:52 +0100
committerDaniel Stenberg <daniel@haxx.se>2021-01-19 08:41:29 +0100
commitabc52bf7cbf300eacabbaf642a0a9ac7af99ddc2 (patch)
treea72fc642f34c95eeeba4fd7ed3d100739596967b /lib/multi.c
parent8399d89360db40cafe16ba65b5d9586d5a4fd3eb (diff)
downloadcurl-bagder/handle-diff.tar.gz
urldata: make magic be the first struct fieldbagder/handle-diff
By making the `magic` identifier the same size and at the same place within the structs (easy, multi, share), libcurl will be able to more reliably detect and safely error out if an application passes in the wrong handle to APIs. Easier to detect and less likely to cause crashes if done. Such mixups can't be detected at compile-time due to them being typedefed void pointers - unless `CURL_STRICTER` is defined.
Diffstat (limited to 'lib/multi.c')
-rw-r--r--lib/multi.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/lib/multi.c b/lib/multi.c
index 8d6d2cee1..132378d0e 100644
--- a/lib/multi.c
+++ b/lib/multi.c
@@ -69,7 +69,7 @@
#define CURL_MULTI_HANDLE 0x000bab1e
#define GOOD_MULTI_HANDLE(x) \
- ((x) && (x)->type == CURL_MULTI_HANDLE)
+ ((x) && (x)->magic == CURL_MULTI_HANDLE)
static CURLMcode singlesocket(struct Curl_multi *multi,
struct Curl_easy *data);
@@ -360,7 +360,7 @@ struct Curl_multi *Curl_multi_handle(int hashsize, /* socket hash */
if(!multi)
return NULL;
- multi->type = CURL_MULTI_HANDLE;
+ multi->magic = CURL_MULTI_HANDLE;
if(Curl_mk_dnscache(&multi->hostcache))
goto error;
@@ -2453,7 +2453,7 @@ CURLMcode curl_multi_cleanup(struct Curl_multi *multi)
if(multi->in_callback)
return CURLM_RECURSIVE_API_CALL;
- multi->type = 0; /* not good anymore */
+ multi->magic = 0; /* not good anymore */
/* Firsrt remove all remaining easy handles */
data = multi->easyp;