summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFrancois Rivard <frivard@coveo.com>2019-10-23 10:04:09 -0400
committerDaniel Stenberg <daniel@haxx.se>2019-10-24 16:30:40 +0200
commit8986df802db9b5338d9d50a54232ebae4dbcf6dd (patch)
treecba72f08233634cbb88d45544beb37cf18e25c42
parentb3378a793cf9530024c4312e261946c28d847f2a (diff)
downloadcurl-8986df802db9b5338d9d50a54232ebae4dbcf6dd.tar.gz
schannel: reverse the order of certinfo insertions
Fixes #4518 Closes #4519
-rw-r--r--lib/vtls/schannel.c6
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;
}