diff options
author | Daniel Stenberg <daniel@haxx.se> | 2017-06-01 15:03:30 +0200 |
---|---|---|
committer | Daniel Stenberg <daniel@haxx.se> | 2017-06-01 21:06:09 +0200 |
commit | efc7c1d86f1543870712d1a0ef4eecd67e933921 (patch) | |
tree | 17ce234c855375f1378ee598b9bcf003c51d5531 | |
parent | 4eafc6c249cd390938cc3216e07571e0fc885bb3 (diff) |
typecheck-gcc.h: check CURLINFO_CERTINFO
... and update the certinfo.c example accordingly.
Fixes https://github.com/curl/curl/issues/846
-rw-r--r-- | docs/KNOWN_BUGS | 9 | ||||
-rw-r--r-- | docs/examples/certinfo.c | 19 | ||||
-rw-r--r-- | include/curl/typecheck-gcc.h | 9 |
3 files changed, 16 insertions, 21 deletions
diff --git a/docs/KNOWN_BUGS b/docs/KNOWN_BUGS index 4415ce211..517cd144a 100644 --- a/docs/KNOWN_BUGS +++ b/docs/KNOWN_BUGS @@ -49,7 +49,6 @@ problems may have been fixed or changed somewhat since this was written! 5.7 Visual Studio project gaps 5.8 configure finding libs in wrong directory 5.9 Utilize Requires.private directives in libcurl.pc - 5.10 Fix the gcc typechecks 6. Authentication 6.1 NTLM authentication and unicode @@ -364,14 +363,6 @@ problems may have been fixed or changed somewhat since this was written! https://github.com/curl/curl/issues/864 -5.10 Fix the gcc typechecks - - Issue #846 identifies a problem with the gcc-typechecks and how the types are - documented and checked for CURLINFO_CERTINFO but our attempts to fix the - issue were futile and needs more attention. - - https://github.com/curl/curl/issues/846 - 6. Authentication 6.1 NTLM authentication and unicode diff --git a/docs/examples/certinfo.c b/docs/examples/certinfo.c index de2e31088..1aee614ce 100644 --- a/docs/examples/certinfo.c +++ b/docs/examples/certinfo.c @@ -5,7 +5,7 @@ * | (__| |_| | _ <| |___ * \___|\___/|_| \_\_____| * - * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al. + * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al. * * This software is licensed as described in the file COPYING, which * you should have received as part of this distribution. The terms @@ -56,24 +56,19 @@ int main(void) res = curl_easy_perform(curl); if(!res) { - union { - struct curl_slist *to_info; - struct curl_certinfo *to_certinfo; - } ptr; + struct curl_certinfo *certinfo; - ptr.to_info = NULL; + res = curl_easy_getinfo(curl, CURLINFO_CERTINFO, &certinfo); - res = curl_easy_getinfo(curl, CURLINFO_CERTINFO, &ptr.to_info); - - if(!res && ptr.to_info) { + if(!res && certinfo) { int i; - printf("%d certs!\n", ptr.to_certinfo->num_of_certs); + printf("%d certs!\n", certinfo->num_of_certs); - for(i = 0; i < ptr.to_certinfo->num_of_certs; i++) { + for(i = 0; i < certinfo->num_of_certs; i++) { struct curl_slist *slist; - for(slist = ptr.to_certinfo->certinfo[i]; slist; slist = slist->next) + for(slist = certinfo->certinfo[i]; slist; slist = slist->next) printf("%s\n", slist->data); } diff --git a/include/curl/typecheck-gcc.h b/include/curl/typecheck-gcc.h index 1d1066d78..0a08175f7 100644 --- a/include/curl/typecheck-gcc.h +++ b/include/curl/typecheck-gcc.h @@ -127,6 +127,9 @@ __extension__ ({ \ if(_curl_is_tlssessioninfo_info(_curl_info)) \ if(!_curl_is_arr((arg), struct curl_tlssessioninfo *)) \ _curl_easy_getinfo_err_curl_tlssesssioninfo(); \ + if(_curl_is_certinfo_info(_curl_info)) \ + if(!_curl_is_arr((arg), struct curl_certinfo *)) \ + _curl_easy_getinfo_err_curl_certinfo(); \ if(_curl_is_socket_info(_curl_info)) \ if(!_curl_is_arr((arg), curl_socket_t)) \ _curl_easy_getinfo_err_curl_socket(); \ @@ -210,6 +213,9 @@ _CURL_WARNING(_curl_easy_getinfo_err_curl_slist, _CURL_WARNING(_curl_easy_getinfo_err_curl_tlssesssioninfo, "curl_easy_getinfo expects a pointer to " "'struct curl_tlssessioninfo *' for this info") +_CURL_WARNING(_curl_easy_getinfo_err_curl_certinfo, + "curl_easy_getinfo expects a pointer to " + "'struct curl_certinfo *' for this info") _CURL_WARNING(_curl_easy_getinfo_err_curl_socket, "curl_easy_getinfo expects a pointer to curl_socket_t for this info") @@ -380,6 +386,9 @@ _CURL_WARNING(_curl_easy_getinfo_err_curl_socket, #define _curl_is_tlssessioninfo_info(info) \ (((info) == CURLINFO_TLS_SSL_PTR) || ((info) == CURLINFO_TLS_SESSION)) +/* true if info expects a pointer to struct curl_certinfo * argument */ +#define _curl_is_certinfo_info(info) ((info) == CURLINFO_CERTINFO) + /* true if info expects a pointer to struct curl_socket_t argument */ #define _curl_is_socket_info(info) \ (CURLINFO_SOCKET < (info)) |