Test that X509_NAME_add_entry will not allow invalid entries to be added

OpenSSL's API loves to have invalid states for objects, which means we
constantly need to check for objects in bad states.

Change-Id: I53d2a1dcda2e1bc723d1d6310dda88867a5ef341
Reviewed-on: https://boringssl-review.googlesource.com/c/boringssl/+/81887
Reviewed-by: Adam Langley <agl@google.com>
Auto-Submit: David Benjamin <davidben@google.com>
Commit-Queue: David Benjamin <davidben@google.com>
diff --git a/crypto/x509/x509_test.cc b/crypto/x509/x509_test.cc
index d98482c..b9094d0 100644
--- a/crypto/x509/x509_test.cc
+++ b/crypto/x509/x509_test.cc
@@ -5186,6 +5186,16 @@
   }
 }
 
+// Adding an invalid entry to an |X509_NAME| should not be possible.
+TEST(X509Test, AddInvalidEntryToName) {
+  bssl::UniquePtr<X509_NAME> name(X509_NAME_new());
+  ASSERT_TRUE(name);
+  bssl::UniquePtr<X509_NAME_ENTRY> entry(X509_NAME_ENTRY_new());
+  ASSERT_TRUE(entry);
+  EXPECT_FALSE(
+      X509_NAME_add_entry(name.get(), entry.get(), /*loc=*/-1, /*set=*/0));
+}
+
 TEST(X509Test, AddDuplicates) {
   bssl::UniquePtr<X509_STORE> store(X509_STORE_new());
   bssl::UniquePtr<X509> a(CertFromPEM(kCrossSigningRootPEM));