aboutsummaryrefslogtreecommitdiff
path: root/dnscrypt/dnscrypt.c
diff options
context:
space:
mode:
Diffstat (limited to 'dnscrypt/dnscrypt.c')
-rw-r--r--dnscrypt/dnscrypt.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/dnscrypt/dnscrypt.c b/dnscrypt/dnscrypt.c
index 6f1a236ad7e5..fb7dff8618a5 100644
--- a/dnscrypt/dnscrypt.c
+++ b/dnscrypt/dnscrypt.c
@@ -842,7 +842,14 @@ dnsc_parse_keys(struct dnsc_env *env, struct config_file *cfg)
if(memcmp(current_keypair->crypt_publickey,
env->signed_certs[c].server_publickey,
crypto_box_PUBLICKEYBYTES) == 0) {
- dnsccert *current_cert = &env->certs[cert_id++];
+ dnsccert* current_cert;
+ if(cert_id >= env->signed_certs_count) {
+ log_err("dnscrypt: secret key %s matches a cert that "
+ "is already bound to another key (duplicate "
+ "dnscrypt-secret-key?)", head->str);
+ return -1;
+ }
+ current_cert = &env->certs[cert_id++];
found_cert = 1;
current_cert->keypair = current_keypair;
memcpy(current_cert->magic_query,