]> git.ipfire.org Git - thirdparty/freeradius-server.git/commitdiff
Free authority info access extracted from cert
authorNick Porter <nick@portercomputing.co.uk>
Wed, 22 Jan 2025 17:46:12 +0000 (17:46 +0000)
committerNick Porter <nick@portercomputing.co.uk>
Thu, 23 Jan 2025 08:47:27 +0000 (08:47 +0000)
src/main/tls.c

index 855de141fe48d2b7244aca44eabf9ea0695ceb26..1a24cb99f71cc1d4eec9b27d80d9b91ea9bb8325 100644 (file)
@@ -2570,23 +2570,28 @@ static int ocsp_parse_cert_url(X509 *cert, char **host_out, char **port_out,
                               char **path_out, int *is_https)
 {
        int                     i;
-       bool                    found_uri = false;
 
        AUTHORITY_INFO_ACCESS   *aia;
        ACCESS_DESCRIPTION      *ad;
+       int                     ret = -1;
 
        aia = X509_get_ext_d2i(cert, NID_info_access, NULL, NULL);
 
+       if (!aia) return 0;
+
        for (i = 0; i < sk_ACCESS_DESCRIPTION_num(aia); i++) {
                ad = sk_ACCESS_DESCRIPTION_value(aia, i);
                if (OBJ_obj2nid(ad->method) != NID_ad_OCSP) continue;
                if (ad->location->type != GEN_URI) continue;
-               found_uri = true;
 
                if (OCSP_parse_url((char *) ad->location->d.ia5->data, host_out,
-                                  port_out, path_out, is_https)) return 1;
+                                  port_out, path_out, is_https)) {
+                       ret = 1;
+                       break;
+               }
        }
-       return found_uri ? -1 : 0;
+       AUTHORITY_INFO_ACCESS_free(aia);
+       return ret;
 }
 
 /*