diff --git a/crypto/kyber/kyber.c b/crypto/kyber/kyber.c
index 776c085..98c70e6 100644
--- a/crypto/kyber/kyber.c
+++ b/crypto/kyber/kyber.c
@@ -132,7 +132,7 @@
 static uint16_t reduce(uint32_t x) {
   assert(x < kPrime + 2u * kPrime * kPrime);
   uint64_t product = (uint64_t)x * kBarrettMultiplier;
-  uint32_t quotient = product >> kBarrettShift;
+  uint32_t quotient = (uint32_t)(product >> kBarrettShift);
   uint32_t remainder = x - quotient * kPrime;
   return reduce_once(remainder);
 }
@@ -491,9 +491,10 @@
 // remainder (for rounding) and the quotient (as the result), we cannot use
 // |reduce| here, but need to do the Barrett reduction directly.
 static uint16_t compress(uint16_t x, int bits) {
-  uint32_t product = (uint32_t)x << bits;
-  uint32_t quotient = ((uint64_t)product * kBarrettMultiplier) >> kBarrettShift;
-  uint32_t remainder = product - quotient * kPrime;
+  uint32_t shifted = (uint32_t)x << bits;
+  uint64_t product = (uint64_t)shifted * kBarrettMultiplier;
+  uint32_t quotient = (uint32_t)(product >> kBarrettShift);
+  uint32_t remainder = shifted - quotient * kPrime;
 
   // Adjust the quotient to round correctly:
   //   0 <= remainder <= kHalfPrime round to 0
diff --git a/crypto/x509/x509_time_test.cc b/crypto/x509/x509_time_test.cc
index c0327d2..7abb10d 100644
--- a/crypto/x509/x509_time_test.cc
+++ b/crypto/x509/x509_time_test.cc
@@ -296,14 +296,11 @@
   for (auto &test : kX509CmpTests) {
     SCOPED_TRACE(test.data);
 
-    ASN1_TIME t;
+    bssl::UniquePtr<ASN1_STRING> t(ASN1_STRING_type_new(test.type));
+    ASSERT_TRUE(t);
+    ASSERT_TRUE(ASN1_STRING_set(t.get(), test.data, strlen(test.data)));
 
-    memset(&t, 0, sizeof(t));
-    t.type = test.type;
-    t.data = (unsigned char*) test.data;
-    t.length = strlen(test.data);
-
-    EXPECT_EQ(test.expected, X509_cmp_time_posix(&t, test.cmp_time));
+    EXPECT_EQ(test.expected, X509_cmp_time_posix(t.get(), test.cmp_time));
   }
 }
 
diff --git a/ssl/test/async_bio.cc b/ssl/test/async_bio.cc
index 89d66d7..9eae290 100644
--- a/ssl/test/async_bio.cc
+++ b/ssl/test/async_bio.cc
@@ -59,8 +59,8 @@
     return -1;
   }
 
-  if (!a->datagram && (size_t)inl > a->write_quota) {
-    inl = a->write_quota;
+  if (!a->datagram && static_cast<size_t>(inl) > a->write_quota) {
+    inl = static_cast<int>(a->write_quota);
   }
   int ret = BIO_write(bio->next_bio, in, inl);
   if (ret <= 0) {
@@ -85,8 +85,8 @@
     return -1;
   }
 
-  if (!a->datagram && (size_t)outl > a->read_quota) {
-    outl = a->read_quota;
+  if (!a->datagram && static_cast<size_t>(outl) > a->read_quota) {
+    outl = static_cast<int>(a->read_quota);
   }
   int ret = BIO_read(bio->next_bio, out, outl);
   if (ret <= 0) {
