diff options
author | Francois Rivard <frivard@coveo.com> | 2019-10-23 10:04:09 -0400 |
---|---|---|
committer | Daniel Stenberg <daniel@haxx.se> | 2019-10-24 16:30:40 +0200 |
commit | 8986df802db9b5338d9d50a54232ebae4dbcf6dd (patch) | |
tree | cba72f08233634cbb88d45544beb37cf18e25c42 | |
parent | b3378a793cf9530024c4312e261946c28d847f2a (diff) |
schannel: reverse the order of certinfo insertions
Fixes #4518
Closes #4519
-rw-r--r-- | lib/vtls/schannel.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/lib/vtls/schannel.c b/lib/vtls/schannel.c index 37273135c..bbd2fe921 100644 --- a/lib/vtls/schannel.c +++ b/lib/vtls/schannel.c @@ -1181,6 +1181,7 @@ struct Adder_args struct connectdata *conn; CURLcode result; int idx; + int certs_count; }; static bool @@ -1191,7 +1192,9 @@ add_cert_to_certinfo(const CERT_CONTEXT *ccert_context, void *raw_arg) if(valid_cert_encoding(ccert_context)) { const char *beg = (const char *) ccert_context->pbCertEncoded; const char *end = beg + ccert_context->cbCertEncoded; - args->result = Curl_extract_certinfo(args->conn, (args->idx)++, beg, end); + int insert_index = (args->certs_count - 1) - args->idx; + args->result = Curl_extract_certinfo(args->conn, insert_index, beg, end); + args->idx++; } return args->result == CURLE_OK; } @@ -1326,6 +1329,7 @@ schannel_connect_step3(struct connectdata *conn, int sockindex) struct Adder_args args; args.conn = conn; args.idx = 0; + args.certs_count = certs_count; traverse_cert_store(ccert_context, add_cert_to_certinfo, &args); result = args.result; } |