Fix a bug in bssl::OpenRecord.

Checking the record type returned by the |tls_open_record| call only
makes sense if that call was successful.

Change-Id: Ib4bebd2b1198c7def513d9fba3653524c17a6e68
Reviewed-on: https://boringssl-review.googlesource.com/18884
Reviewed-by: Adam Langley <agl@google.com>
diff --git a/ssl/tls_record.cc b/ssl/tls_record.cc
index 745ddb8..f8bb521 100644
--- a/ssl/tls_record.cc
+++ b/ssl/tls_record.cc
@@ -596,44 +596,33 @@
     return OpenRecordResult::kError;
   }
 
-  *out = Span<uint8_t>();
-  *out_record_len = 0;
-
   CBS plaintext;
   uint8_t type;
-  size_t record_len;
   const ssl_open_record_t result = tls_open_record(
-      ssl, &type, &plaintext, &record_len, out_alert, in.data(), in.size());
-  if (type != SSL3_RT_APPLICATION_DATA && type != SSL3_RT_ALERT) {
-    *out_alert = SSL_AD_UNEXPECTED_MESSAGE;
-    return OpenRecordResult::kError;
-  }
+      ssl, &type, &plaintext, out_record_len, out_alert, in.data(), in.size());
 
-  OpenRecordResult ret = OpenRecordResult::kError;
   switch (result) {
     case ssl_open_record_success:
-      ret = OpenRecordResult::kOK;
-      break;
+      if (type != SSL3_RT_APPLICATION_DATA && type != SSL3_RT_ALERT) {
+        *out_alert = SSL_AD_UNEXPECTED_MESSAGE;
+        return OpenRecordResult::kError;
+      }
+      *out = MakeSpan(
+          const_cast<uint8_t*>(CBS_data(&plaintext)), CBS_len(&plaintext));
+      return OpenRecordResult::kOK;
     case ssl_open_record_discard:
-      ret = OpenRecordResult::kDiscard;
-      break;
+      return OpenRecordResult::kDiscard;
     case ssl_open_record_partial:
-      ret = OpenRecordResult::kIncompleteRecord;
-      break;
+      return OpenRecordResult::kIncompleteRecord;
     case ssl_open_record_close_notify:
-      ret = OpenRecordResult::kAlertCloseNotify;
-      break;
+      return OpenRecordResult::kAlertCloseNotify;
     case ssl_open_record_fatal_alert:
-      ret = OpenRecordResult::kAlertFatal;
-      break;
+      return OpenRecordResult::kAlertFatal;
     case ssl_open_record_error:
-      ret = OpenRecordResult::kError;
-      break;
+      return OpenRecordResult::kError;
   }
-  *out =
-      MakeSpan(const_cast<uint8_t*>(CBS_data(&plaintext)), CBS_len(&plaintext));
-  *out_record_len = record_len;
-  return ret;
+  assert(false);
+  return OpenRecordResult::kError;
 }
 
 size_t SealRecordPrefixLen(const SSL *ssl, const size_t record_len) {