typecheck-gcc.h: check CURLINFO_CERTINFO
... and update the certinfo.c example accordingly. Fixes https://github.com/curl/curl/issues/846
This commit is contained in:
Родитель
4eafc6c249
Коммит
efc7c1d86f
|
@ -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
|
||||
|
|
|
@ -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);
|
||||
|
||||
}
|
||||
|
|
|
@ -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))
|
||||
|
|
Загрузка…
Ссылка в новой задаче