diff --git a/folly/ssl/OpenSSLCertUtils.cpp b/folly/ssl/OpenSSLCertUtils.cpp index 171c86fbb07..7ee167ac06f 100644 --- a/folly/ssl/OpenSSLCertUtils.cpp +++ b/folly/ssl/OpenSSLCertUtils.cpp @@ -57,12 +57,16 @@ std::string getExtOid(X509_EXTENSION* extension) { std::string ret(buf_size, '\0'); auto length = OBJ_obj2txt(ret.data(), ret.size(), object, 1); - if (length > buf_size) { + if (length < 0) { + return {}; + } + + if (length >= buf_size) { // Reserve one byte for the terminating zero - ret.resize(length, '\0'); + ret.resize(static_cast(length) + 1, '\0'); OBJ_obj2txt(ret.data(), ret.size(), object, 1); } - ret.resize(length); + ret.resize(static_cast(length)); return ret; } @@ -440,4 +444,4 @@ X509StoreUniquePtr OpenSSLCertUtils::readStoreFromBuffer(ByteRange certRange) { return store; } } // namespace ssl -} // namespace folly +} // namespace folly \ No newline at end of file