diff --git a/src/kits/network/libnetapi/Certificate.cpp b/src/kits/network/libnetapi/Certificate.cpp index 9169aab97a..b7fdc7ccf8 100644 --- a/src/kits/network/libnetapi/Certificate.cpp +++ b/src/kits/network/libnetapi/Certificate.cpp @@ -23,9 +23,14 @@ parse_ASN1(ASN1_GENERALIZEDTIME *asn1) if (sscanf((char*)asn1->data, "%2d%2d%2d%2d%2d%2d", &time.tm_year, &time.tm_mon, &time.tm_mday, &time.tm_hour, &time.tm_min, - &time.tm_sec) == 6) - return mktime(&time); + &time.tm_sec) == 6) { + // Month is 0 based, and year is 1900-based for mktime. + time.tm_year += 100; + time.tm_mon -= 1; + + return mktime(&time); + } return B_BAD_DATA; } @@ -33,11 +38,11 @@ parse_ASN1(ASN1_GENERALIZEDTIME *asn1) static BString decode_X509_NAME(X509_NAME* name) { - int len = X509_NAME_get_text_by_NID(name, 0, NULL, 0); - char buffer[len]; - X509_NAME_get_text_by_NID(name, 0, buffer, len); + char* buffer = X509_NAME_oneline(name, NULL, 0); - return BString(buffer); + BString result(buffer); + OPENSSL_free(buffer); + return result; } @@ -109,6 +114,7 @@ BCertificate::Private::Private(X509* data) { } + #else