Commit fe43a662 authored by Steve Holme's avatar Steve Holme
Browse files

vtls: Use CURLcode for Curl_ssl_init_certinfo() return type

The return type for this function was 0 on success and 1 on error. This
was then examined by the calling functions and, in most cases, used to
return CURLE_OUT_OF_MEMORY.

Instead use CURLcode for the return type and return the out of memory
error directly, propagating it up the call stack.
parent 1ac4db23
Loading
Loading
Loading
Loading
+4 −2
Original line number Diff line number Diff line
@@ -855,8 +855,10 @@ static CURLcode gskit_connect_step3(struct connectdata *conn, int sockindex)
     However the server certificate may be available, thus we can return
     info about it. */
  if(data->set.ssl.certinfo) {
    if(Curl_ssl_init_certinfo(data, 1))
      return CURLE_OUT_OF_MEMORY;
    result = Curl_ssl_init_certinfo(data, 1);
    if(result)
      return result;

    if(cert) {
      result = Curl_extract_certinfo(conn, 0, cert, certend);
      if(result)
+5 −2
Original line number Diff line number Diff line
@@ -2241,6 +2241,7 @@ static CURLcode get_cert_chain(struct connectdata *conn,
                               struct ssl_connect_data *connssl)

{
  CURLcode result;
  STACK_OF(X509) *sk;
  int i;
  char *bufp;
@@ -2258,9 +2259,11 @@ static CURLcode get_cert_chain(struct connectdata *conn,
  }

  numcerts = sk_X509_num(sk);
  if(Curl_ssl_init_certinfo(data, numcerts)) {

  result = Curl_ssl_init_certinfo(data, numcerts);
  if(result) {
    free(bufp);
    return CURLE_OUT_OF_MEMORY;
    return result;
  }

  infof(data, "--- Certificate chain\n");
+7 −8
Original line number Diff line number Diff line
@@ -605,22 +605,21 @@ void Curl_ssl_free_certinfo(struct SessionHandle *data)
  }
}

int Curl_ssl_init_certinfo(struct SessionHandle * data,
                           int num)
CURLcode Curl_ssl_init_certinfo(struct SessionHandle *data, int num)
{
  struct curl_certinfo *ci = &data->info.certs;
  struct curl_slist **table;

  /* Initialize the certificate information structures. Return 0 if OK, else 1.
   */
  /* Initialize the certificate information structures */
  Curl_ssl_free_certinfo(data);
  ci->num_of_certs = num;
  table = calloc((size_t) num, sizeof(struct curl_slist *));
  if(!table)
    return 1;
    return CURLE_OUT_OF_MEMORY;

  ci->certinfo = table;
  return 0;

  return CURLE_OK;
}

/*
+1 −1
Original line number Diff line number Diff line
@@ -82,7 +82,7 @@ int Curl_ssl_check_cxn(struct connectdata *conn);
/* Certificate information list handling. */

void Curl_ssl_free_certinfo(struct SessionHandle *data);
int Curl_ssl_init_certinfo(struct SessionHandle * data, int num);
CURLcode Curl_ssl_init_certinfo(struct SessionHandle * data, int num);
CURLcode Curl_ssl_push_certinfo_len(struct SessionHandle * data, int certnum,
                                    const char * label, const char * value,
                                    size_t valuelen);