X-Git-Url: https://code.wpia.club/?a=blobdiff_plain;f=src%2Fcrypto%2FX509.cpp;h=5eed484bd24aebe0c798243303400e12cfe47623;hb=3d3967b16610579e977b5d8685f3eedb10cbc23a;hp=a068957b4071a2646f3d2b8d475b991aae8bdf4c;hpb=0141e5a371a97b0cb409d168ea8401bcb4f30923;p=cassiopeia.git diff --git a/src/crypto/X509.cpp b/src/crypto/X509.cpp index a068957..5eed484 100644 --- a/src/crypto/X509.cpp +++ b/src/crypto/X509.cpp @@ -184,7 +184,7 @@ void X509Cert::setExtensions( std::shared_ptr caCert, std::vector X509Cert::sign( std::shared_ptr caK //X509_print_fp( stdout, target.get() ); std::shared_ptr mem = std::shared_ptr( BIO_new( BIO_s_mem() ), BIO_free ); + if( !mem ) { throw "Failed to allocate memory for the signed certificate."; } + PEM_write_bio_X509( mem.get(), target.get() ); BUF_MEM* buf = NULL; @@ -259,14 +261,15 @@ std::shared_ptr X509Cert::sign( std::shared_ptr caK res->certificate = std::string( buf->data, buf->data + buf->length ); std::shared_ptr ser( ASN1_INTEGER_to_BN( target->cert_info->serialNumber, NULL ), BN_free ); + if( !ser ) { throw "Failed to retrieve certificate serial of signed certificate."; } std::shared_ptr serStr( BN_bn2hex( ser.get() ), - []( char *p ) { - OPENSSL_free(p); + []( char* p ) { + OPENSSL_free( p ); } ); // OPENSSL_free is a macro... res->serial = serStr ? std::string( serStr.get() ) : "";