Slightly simplify SSLBuffer

We really don't need buf_allocated, buf_ already can't move
forward or anything strange since free() is called on it.

Change-Id: I05cf6fa4a6c7b252b64e1cbe5885d29d17d8cddb
Reviewed-on: https://boringssl-review.googlesource.com/c/boringssl/+/74187
Auto-Submit: Bob Beck <bbe@google.com>
Commit-Queue: Bob Beck <bbe@google.com>
Reviewed-by: David Benjamin <davidben@google.com>
diff --git a/ssl/internal.h b/ssl/internal.h
index eab3af7..7dc522d 100644
--- a/ssl/internal.h
+++ b/ssl/internal.h
@@ -1682,9 +1682,6 @@
   uint16_t cap_ = 0;
   // inline_buf_ is a static buffer for short reads.
   uint8_t inline_buf_[SSL3_RT_HEADER_LENGTH];
-  // buf_allocated_ is true if |buf_| points to allocated data and must be freed
-  // or false if it points into |inline_buf_|.
-  bool buf_allocated_ = false;
 };
 
 // ssl_read_buffer_extend_to extends the read buffer to the desired length. For
diff --git a/ssl/ssl_buffer.cc b/ssl/ssl_buffer.cc
index ddd39eb..76c74e2 100644
--- a/ssl/ssl_buffer.cc
+++ b/ssl/ssl_buffer.cc
@@ -37,11 +37,10 @@
               "SSL3_ALIGN_PAYLOAD must be a power of 2");
 
 void SSLBuffer::Clear() {
-  if (buf_allocated_) {
+  if (buf_ != inline_buf_) {
     free(buf_);  // Allocated with malloc().
   }
   buf_ = nullptr;
-  buf_allocated_ = false;
   offset_ = 0;
   size_ = 0;
   cap_ = 0;
@@ -58,13 +57,11 @@
   }
 
   uint8_t *new_buf;
-  bool new_buf_allocated;
   size_t new_offset;
   if (new_cap <= sizeof(inline_buf_)) {
     // This function is called twice per TLS record, first for the five-byte
     // header. To avoid allocating twice, use an inline buffer for short inputs.
     new_buf = inline_buf_;
-    new_buf_allocated = false;
     new_offset = 0;
   } else {
     // Add up to |SSL3_ALIGN_PAYLOAD| - 1 bytes of slack for alignment.
@@ -77,7 +74,6 @@
       OPENSSL_PUT_ERROR(SSL, ERR_R_MALLOC_FAILURE);
       return false;
     }
-    new_buf_allocated = true;
 
     // Offset the buffer such that the record body is aligned.
     new_offset =
@@ -88,12 +84,11 @@
   // may alias.
   OPENSSL_memmove(new_buf + new_offset, buf_ + offset_, size_);
 
-  if (buf_allocated_) {
+  if (buf_ != inline_buf_) {
     free(buf_);  // Allocated with malloc().
   }
 
   buf_ = new_buf;
-  buf_allocated_ = new_buf_allocated;
   offset_ = new_offset;
   cap_ = new_cap;
   return true;