summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorhenrike@webrtc.org <henrike@webrtc.org>2014-11-06 17:23:09 +0000
committerhenrike@webrtc.org <henrike@webrtc.org>2014-11-06 17:23:09 +0000
commita031c17214da02adca9211ad161447e6cfbe8821 (patch)
tree7ab33f23050f973858801dbfae914202a6341153
parenteb46bb84a37bc9384ec3941a97966bec87d2476c (diff)
downloadwebrtc-a031c17214da02adca9211ad161447e6cfbe8821.tar.gz
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/webrtc@7655 4adac7df-926f-26a2-2b94-8c16560cd09d
-rw-r--r--base/helpers.cc25
-rw-r--r--base/openssladapter.cc10
-rw-r--r--base/opensslstreamadapter.cc11
-rw-r--r--base/safe_conversions_impl.h2
4 files changed, 17 insertions, 31 deletions
diff --git a/base/helpers.cc b/base/helpers.cc
index 8b14cdfd..84d1c93b 100644
--- a/base/helpers.cc
+++ b/base/helpers.cc
@@ -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)
diff --git a/base/openssladapter.cc b/base/openssladapter.cc
index 68a1fcb1..feb01d36 100644
--- a/base/openssladapter.cc
+++ b/base/openssladapter.cc
@@ -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) {
diff --git a/base/opensslstreamadapter.cc b/base/opensslstreamadapter.cc
index 133eb72b..d790e4e8 100644
--- a/base/opensslstreamadapter.cc
+++ b/base/opensslstreamadapter.cc
@@ -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:
diff --git a/base/safe_conversions_impl.h b/base/safe_conversions_impl.h
index 2950f970..77b053a8 100644
--- a/base/safe_conversions_impl.h
+++ b/base/safe_conversions_impl.h
@@ -15,6 +15,8 @@
#include <limits>
+#include "webrtc/base/compile_assert.h"
+
namespace rtc {
namespace internal {