ec/ecp_nistz256.c: harmonize with latest indent script.
[oweals/openssl.git] / crypto / ocsp / ocsp_lib.c
index 36905d76cd4249b8838f90683eb7548535b6a8f6..4a7fe2592c153800a8cdb608fa0329120d79dcfd 100644 (file)
@@ -124,7 +124,8 @@ OCSP_CERTID *OCSP_cert_id_new(const EVP_MD *dgst,
        if (!(ASN1_OCTET_STRING_set(cid->issuerNameHash, md, i))) goto err;
 
        /* Calculate the issuerKey hash, excluding tag and length */
-       EVP_Digest(issuerKey->data, issuerKey->length, md, &i, dgst, NULL);
+       if (!EVP_Digest(issuerKey->data, issuerKey->length, md, &i, dgst, NULL))
+               goto err;
 
        if (!(ASN1_OCTET_STRING_set(cid->issuerKeyHash, md, i))) goto err;
 
@@ -164,20 +165,20 @@ int OCSP_id_cmp(OCSP_CERTID *a, OCSP_CERTID *b)
  * it is SSL.
  */
 
-int OCSP_parse_url(char *url, char **phost, char **pport, char **ppath, int *pssl)
+int OCSP_parse_url(const char *url, char **phost, char **pport, char **ppath, int *pssl)
        {
        char *p, *buf;
 
        char *host, *port;
 
-       /* dup the buffer since we are going to mess with it */
-       buf = BUF_strdup(url);
-       if (!buf) goto mem_err;
-
        *phost = NULL;
        *pport = NULL;
        *ppath = NULL;
 
+       /* dup the buffer since we are going to mess with it */
+       buf = BUF_strdup(url);
+       if (!buf) goto mem_err;
+
        /* Check for initial colon */
        p = strchr(buf, ':');
 
@@ -221,8 +222,19 @@ int OCSP_parse_url(char *url, char **phost, char **pport, char **ppath, int *pss
 
        if (!*ppath) goto mem_err;
 
+       p = host;
+       if(host[0] == '[')
+               {
+               /* ipv6 literal */
+               host++;
+               p = strchr(host, ']');
+               if(!p) goto parse_err;
+               *p = '\0';
+               p++;
+               }
+
        /* Look for optional ':' for port number */
-       if ((p = strchr(host, ':')))
+       if ((p = strchr(p, ':')))
                {
                *p = 0;
                port = p + 1;