Fix WebRTC Win64 + BoringSSL build.

There were many size_t to int conversions. RAND_poll and RAND_seed no longer do
anything in BoringSSL, so fix that one by removing it. Use a checked_cast for
the remaining ones.

BUG=chromium:429039
R=henrike@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/28909004

git-svn-id: http://webrtc.googlecode.com/svn/trunk@7655 4adac7df-926f-26a2-2b94-8c16560cd09d
This commit is contained in:
henrike@webrtc.org 2014-11-06 17:23:09 +00:00
parent dd43bbed8f
commit d89b69aade
4 changed files with 17 additions and 31 deletions

View File

@ -47,36 +47,17 @@ class RandomGenerator {
};
#if defined(SSL_USE_OPENSSL)
// The OpenSSL RNG. Need to make sure it doesn't run out of entropy.
// The OpenSSL RNG.
class SecureRandomGenerator : public RandomGenerator {
public:
SecureRandomGenerator() : inited_(false) {
}
~SecureRandomGenerator() {
}
SecureRandomGenerator() {}
~SecureRandomGenerator() {}
virtual bool Init(const void* seed, size_t len) {
// By default, seed from the system state.
if (!inited_) {
if (RAND_poll() <= 0) {
return false;
}
inited_ = true;
}
// Allow app data to be mixed in, if provided.
if (seed) {
RAND_seed(seed, len);
}
return true;
}
virtual bool Generate(void* buf, size_t len) {
if (!inited_ && !Init(NULL, 0)) {
return false;
}
return (RAND_bytes(reinterpret_cast<unsigned char*>(buf), len) > 0);
}
private:
bool inited_;
};
#elif defined(SSL_USE_NSS_RNG)

View File

@ -34,6 +34,7 @@
#include "webrtc/base/common.h"
#include "webrtc/base/logging.h"
#include "webrtc/base/openssl.h"
#include "webrtc/base/safe_conversions.h"
#include "webrtc/base/sslroots.h"
#include "webrtc/base/stringutils.h"
@ -141,7 +142,7 @@ static int socket_write(BIO* b, const char* in, int inl) {
}
static int socket_puts(BIO* b, const char* str) {
return socket_write(b, str, strlen(str));
return socket_write(b, str, rtc::checked_cast<int>(strlen(str)));
}
static long socket_ctrl(BIO* b, int cmd, long num, void* ptr) {
@ -448,7 +449,7 @@ OpenSSLAdapter::Send(const void* pv, size_t cb) {
ssl_write_needs_read_ = false;
int code = SSL_write(ssl_, pv, cb);
int code = SSL_write(ssl_, pv, checked_cast<int>(cb));
switch (SSL_get_error(ssl_, code)) {
case SSL_ERROR_NONE:
//LOG(LS_INFO) << " -- success";
@ -503,7 +504,7 @@ OpenSSLAdapter::Recv(void* pv, size_t cb) {
ssl_read_needs_write_ = false;
int code = SSL_read(ssl_, pv, cb);
int code = SSL_read(ssl_, pv, checked_cast<int>(cb));
switch (SSL_get_error(ssl_, code)) {
case SSL_ERROR_NONE:
//LOG(LS_INFO) << " -- success";
@ -843,7 +844,8 @@ bool OpenSSLAdapter::ConfigureTrustedRootCertificates(SSL_CTX* ctx) {
for (int i = 0; i < ARRAY_SIZE(kSSLCertCertificateList); i++) {
const unsigned char* cert_buffer = kSSLCertCertificateList[i];
size_t cert_buffer_len = kSSLCertCertificateSizeList[i];
X509* cert = d2i_X509(NULL, &cert_buffer, cert_buffer_len);
X509* cert = d2i_X509(NULL, &cert_buffer,
checked_cast<long>(cert_buffer_len));
if (cert) {
int return_value = X509_STORE_add_cert(SSL_CTX_get_cert_store(ctx), cert);
if (return_value == 0) {

View File

@ -26,6 +26,7 @@
#include "webrtc/base/common.h"
#include "webrtc/base/logging.h"
#include "webrtc/base/safe_conversions.h"
#include "webrtc/base/stream.h"
#include "webrtc/base/openssl.h"
#include "webrtc/base/openssladapter.h"
@ -114,7 +115,7 @@ static int stream_read(BIO* b, char* out, int outl) {
int error;
StreamResult result = stream->Read(out, outl, &read, &error);
if (result == SR_SUCCESS) {
return read;
return checked_cast<int>(read);
} else if (result == SR_EOS) {
b->num = 1;
} else if (result == SR_BLOCK) {
@ -132,7 +133,7 @@ static int stream_write(BIO* b, const char* in, int inl) {
int error;
StreamResult result = stream->Write(in, inl, &written, &error);
if (result == SR_SUCCESS) {
return written;
return checked_cast<int>(written);
} else if (result == SR_BLOCK) {
BIO_set_retry_write(b);
}
@ -140,7 +141,7 @@ static int stream_write(BIO* b, const char* in, int inl) {
}
static int stream_puts(BIO* b, const char* str) {
return stream_write(b, str, strlen(str));
return stream_write(b, str, checked_cast<int>(strlen(str)));
}
static long stream_ctrl(BIO* b, int cmd, long num, void* ptr) {
@ -364,7 +365,7 @@ StreamResult OpenSSLStreamAdapter::Write(const void* data, size_t data_len,
ssl_write_needs_read_ = false;
int code = SSL_write(ssl_, data, data_len);
int code = SSL_write(ssl_, data, checked_cast<int>(data_len));
int ssl_error = SSL_get_error(ssl_, code);
switch (ssl_error) {
case SSL_ERROR_NONE:
@ -425,7 +426,7 @@ StreamResult OpenSSLStreamAdapter::Read(void* data, size_t data_len,
ssl_read_needs_write_ = false;
int code = SSL_read(ssl_, data, data_len);
int code = SSL_read(ssl_, data, checked_cast<int>(data_len));
int ssl_error = SSL_get_error(ssl_, code);
switch (ssl_error) {
case SSL_ERROR_NONE:

View File

@ -15,6 +15,8 @@
#include <limits>
#include "webrtc/base/compile_assert.h"
namespace rtc {
namespace internal {