diff options
author | Daniel Stenberg <daniel@haxx.se> | 2008-03-11 13:14:16 +0000 |
---|---|---|
committer | Daniel Stenberg <daniel@haxx.se> | 2008-03-11 13:14:16 +0000 |
commit | ecf1c6ca5daf0bb8bb5a77167dff8f56cc89417f (patch) | |
tree | 210c31869737c55cdadf21be92ddebc367b36191 | |
parent | 9b48991ebd855efaeefc2a64c3e818465751db6a (diff) |
- Added a macro for curl_easy_setopt() that accepts three arguments and simply
does nothing with them, just to make sure libcurl users always use three
arguments to this function. Due to its use of ... for the third argument, it
is otherwise hard to detect abuse.
-rw-r--r-- | CHANGES | 6 | ||||
-rw-r--r-- | RELEASE-NOTES | 1 | ||||
-rw-r--r-- | include/curl/curl.h | 10 |
3 files changed, 16 insertions, 1 deletions
@@ -6,6 +6,12 @@ Changelog +Daniel Stenberg (11 Mar 2008) +- Added a macro for curl_easy_setopt() that accepts three arguments and simply + does nothing with them, just to make sure libcurl users always use three + arguments to this function. Due to its use of ... for the third argument, it + is otherwise hard to detect abuse. + Michal Marek (11 Mar 2008) - Added a type checking macro for curl_easy_setopt(), needs gcc-4.3 and only works in C mode atm (http://curl.haxx.se/mail/lib-2008-02/0267.html , diff --git a/RELEASE-NOTES b/RELEASE-NOTES index c491d18b3..0c20a0701 100644 --- a/RELEASE-NOTES +++ b/RELEASE-NOTES @@ -20,6 +20,7 @@ This release includes the following changes: o added a type checking macro for curl_easy_setopt(), watch out for new warnings in code using libcurl (needs gcc-4.3 and currently only works in C mode) + o curl_easy_setopt() uses are now checked to use three arguments This release includes the following bugfixes: diff --git a/include/curl/curl.h b/include/curl/curl.h index 3027ca06d..4af714291 100644 --- a/include/curl/curl.h +++ b/include/curl/curl.h @@ -1792,8 +1792,16 @@ CURL_EXTERN CURLcode curl_easy_pause(CURL *handle, int bitmask); #include "multi.h" /* the typechecker doesn't work in C++ (yet) */ -#if (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3)) && !defined(__cplusplus) +#if (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3)) && \ + !defined(__cplusplus) #include "typecheck-gcc.h" +#else +#if defined(__STDC__) && (__STDC__ >= 1) +/* This preprocessor magic that replaces a call with the exact same call is + only done to make sure application authors use exactly three arguments + to this function. */ +#define curl_easy_setopt(handle,opt,param) curl_easy_setopt(handle,opt,param) +#endif /* __STDC__ >= 1 */ #endif /* gcc >= 4.3 && !__cplusplus */ #endif /* __CURL_CURL_H */ |