schannel: reverse the order of certinfo insertions

Fixes #4518
Closes #4519
This commit is contained in:
Francois Rivard 2019-10-23 10:04:09 -04:00 committed by Daniel Stenberg
parent b3378a793c
commit 8986df802d
No known key found for this signature in database
GPG Key ID: 5CC908FDB71E12C2

View File

@ -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;
}