Commit aff153f8 authored by Daniel Stenberg's avatar Daniel Stenberg
Browse files

openssl: fix serial number output

The code extracting the cert serial number was broken and didn't display
it properly.

Bug: https://github.com/bagder/curl/issues/235
Reported-by: dkjjr89
parent 59f3f92b
Loading
Loading
Loading
Loading
+8 −14
Original line number Diff line number Diff line
@@ -2472,25 +2472,19 @@ static CURLcode get_cert_chain(struct connectdata *conn,
    Curl_ssl_push_certinfo(data, i, "Version", bufp); /* hex */

    num=X509_get_serialNumber(x);
    if(num->length <= 4) {
      value = ASN1_INTEGER_get(num);
      infof(data, "   Serial Number: %ld (0x%lx)\n", value, value);
      snprintf(bufp, CERTBUFFERSIZE, "%lx", value);
    }
    else {
    {
      int left = CERTBUFFERSIZE;

      ptr = bufp;
      *ptr++ = 0;
      if(num->type == V_ASN1_NEG_INTEGER)
      if(num->type == V_ASN1_NEG_INTEGER) {
        *ptr++='-';
        left--;
      }

      for(j=0; (j<num->length) && (left>=4); j++) {
        /* TODO: length restrictions */
        snprintf(ptr, 3, "%02x%c",num->data[j],
                 ((j+1 == num->length)?'\n':':'));
        ptr += 3;
        left-=4;
      for(j=0; (j<num->length) && (left>=3); j++) {
        snprintf(ptr, left, "%02x", num->data[j]);
        ptr += 2;
        left -= 2;
      }
      if(num->length)
        infof(data, "   Serial Number: %s\n", bufp);