diff options
-rw-r--r-- | plugins/check_curl.c | 21 |
1 files changed, 16 insertions, 5 deletions
diff --git a/plugins/check_curl.c b/plugins/check_curl.c index 897ca9e1..7bb67645 100644 --- a/plugins/check_curl.c +++ b/plugins/check_curl.c | |||
@@ -991,8 +991,13 @@ mp_state_enum check_http(const check_curl_config config, check_curl_working_stat | |||
991 | * parsing We only check the first certificate and assume it's the one of | 991 | * parsing We only check the first certificate and assume it's the one of |
992 | * the server | 992 | * the server |
993 | */ | 993 | */ |
994 | const char *raw_cert = NULL; | 994 | char *raw_cert = NULL; |
995 | bool got_first_cert = false; | ||
995 | for (int i = 0; i < cert_ptr.to_certinfo->num_of_certs; i++) { | 996 | for (int i = 0; i < cert_ptr.to_certinfo->num_of_certs; i++) { |
997 | if (got_first_cert) { | ||
998 | break; | ||
999 | } | ||
1000 | |||
996 | for (slist = cert_ptr.to_certinfo->certinfo[i]; slist; | 1001 | for (slist = cert_ptr.to_certinfo->certinfo[i]; slist; |
997 | slist = slist->next) { | 1002 | slist = slist->next) { |
998 | if (verbose >= 2) { | 1003 | if (verbose >= 2) { |
@@ -1000,11 +1005,12 @@ mp_state_enum check_http(const check_curl_config config, check_curl_working_stat | |||
1000 | } | 1005 | } |
1001 | if (strncmp(slist->data, "Cert:", 5) == 0) { | 1006 | if (strncmp(slist->data, "Cert:", 5) == 0) { |
1002 | raw_cert = &slist->data[5]; | 1007 | raw_cert = &slist->data[5]; |
1003 | goto GOT_FIRST_CERT; | 1008 | got_first_cert = true; |
1009 | break; | ||
1004 | } | 1010 | } |
1005 | } | 1011 | } |
1006 | } | 1012 | } |
1007 | GOT_FIRST_CERT: | 1013 | |
1008 | if (!raw_cert) { | 1014 | if (!raw_cert) { |
1009 | snprintf(msg, DEFAULT_BUFFER_SIZE, | 1015 | snprintf(msg, DEFAULT_BUFFER_SIZE, |
1010 | _("Cannot retrieve certificates from CERTINFO information - " | 1016 | _("Cannot retrieve certificates from CERTINFO information - " |
@@ -2898,7 +2904,12 @@ int net_noopenssl_check_certificate(cert_ptr_union *cert_ptr, int days_till_exp_ | |||
2898 | printf("**** REQUEST CERTIFICATES ****\n"); | 2904 | printf("**** REQUEST CERTIFICATES ****\n"); |
2899 | } | 2905 | } |
2900 | 2906 | ||
2907 | bool have_first_cert = false; | ||
2901 | for (int i = 0; i < cert_ptr->to_certinfo->num_of_certs; i++) { | 2908 | for (int i = 0; i < cert_ptr->to_certinfo->num_of_certs; i++) { |
2909 | if (have_first_cert) { | ||
2910 | break; | ||
2911 | } | ||
2912 | |||
2902 | for (slist = cert_ptr->to_certinfo->certinfo[i]; slist; slist = slist->next) { | 2913 | for (slist = cert_ptr->to_certinfo->certinfo[i]; slist; slist = slist->next) { |
2903 | /* find first common name in subject, | 2914 | /* find first common name in subject, |
2904 | * TODO: check alternative subjects for | 2915 | * TODO: check alternative subjects for |
@@ -2922,14 +2933,14 @@ int net_noopenssl_check_certificate(cert_ptr_union *cert_ptr, int days_till_exp_ | |||
2922 | } else if (strncasecmp(slist->data, "Expire Date:", 12) == 0) { | 2933 | } else if (strncasecmp(slist->data, "Expire Date:", 12) == 0) { |
2923 | end_date_str = &slist->data[12]; | 2934 | end_date_str = &slist->data[12]; |
2924 | } else if (strncasecmp(slist->data, "Cert:", 5) == 0) { | 2935 | } else if (strncasecmp(slist->data, "Cert:", 5) == 0) { |
2925 | goto HAVE_FIRST_CERT; | 2936 | have_first_cert = true; |
2937 | break; | ||
2926 | } | 2938 | } |
2927 | if (verbose >= 2) { | 2939 | if (verbose >= 2) { |
2928 | printf("%d ** %s\n", i, slist->data); | 2940 | printf("%d ** %s\n", i, slist->data); |
2929 | } | 2941 | } |
2930 | } | 2942 | } |
2931 | } | 2943 | } |
2932 | HAVE_FIRST_CERT: | ||
2933 | 2944 | ||
2934 | if (verbose >= 2) { | 2945 | if (verbose >= 2) { |
2935 | printf("**** REQUEST CERTIFICATES ****\n"); | 2946 | printf("**** REQUEST CERTIFICATES ****\n"); |