Const-correct GENERAL_NAME_cmp.
Also make it a little shorter.
Change-Id: I6ee9d7666e9cf622509c54966a88f899a1974f9f
Reviewed-on: https://boringssl-review.googlesource.com/c/boringssl/+/44405
Reviewed-by: Adam Langley <agl@google.com>
diff --git a/crypto/x509v3/v3_genn.c b/crypto/x509v3/v3_genn.c
index af7e4e1..ae79374 100644
--- a/crypto/x509v3/v3_genn.c
+++ b/crypto/x509v3/v3_genn.c
@@ -122,44 +122,37 @@
}
/* Returns 0 if they are equal, != 0 otherwise. */
-int GENERAL_NAME_cmp(GENERAL_NAME *a, GENERAL_NAME *b)
+int GENERAL_NAME_cmp(const GENERAL_NAME *a, const GENERAL_NAME *b)
{
- int result = -1;
-
if (!a || !b || a->type != b->type)
return -1;
+
switch (a->type) {
case GEN_X400:
- result = ASN1_TYPE_cmp(a->d.x400Address, b->d.x400Address);
- break;
+ return ASN1_TYPE_cmp(a->d.x400Address, b->d.x400Address);
case GEN_EDIPARTY:
- result = edipartyname_cmp(a->d.ediPartyName, b->d.ediPartyName);
- break;
+ return edipartyname_cmp(a->d.ediPartyName, b->d.ediPartyName);
case GEN_OTHERNAME:
- result = OTHERNAME_cmp(a->d.otherName, b->d.otherName);
- break;
+ return OTHERNAME_cmp(a->d.otherName, b->d.otherName);
case GEN_EMAIL:
case GEN_DNS:
case GEN_URI:
- result = ASN1_STRING_cmp(a->d.ia5, b->d.ia5);
- break;
+ return ASN1_STRING_cmp(a->d.ia5, b->d.ia5);
case GEN_DIRNAME:
- result = X509_NAME_cmp(a->d.dirn, b->d.dirn);
- break;
+ return X509_NAME_cmp(a->d.dirn, b->d.dirn);
case GEN_IPADD:
- result = ASN1_OCTET_STRING_cmp(a->d.ip, b->d.ip);
- break;
+ return ASN1_OCTET_STRING_cmp(a->d.ip, b->d.ip);
case GEN_RID:
- result = OBJ_cmp(a->d.rid, b->d.rid);
- break;
+ return OBJ_cmp(a->d.rid, b->d.rid);
}
- return result;
+
+ return -1;
}
/* Returns 0 if they are equal, != 0 otherwise. */
diff --git a/include/openssl/x509v3.h b/include/openssl/x509v3.h
index 09fc4ea..2c9ba73 100644
--- a/include/openssl/x509v3.h
+++ b/include/openssl/x509v3.h
@@ -478,9 +478,8 @@
// GENERAL_NAME_cmp returns zero if |a| and |b| are equal and a non-zero
// value otherwise. Note this function does not provide a comparison suitable
// for sorting.
-//
-// TODO(davidben): Const-correct this function.
-OPENSSL_EXPORT int GENERAL_NAME_cmp(GENERAL_NAME *a, GENERAL_NAME *b);
+OPENSSL_EXPORT int GENERAL_NAME_cmp(const GENERAL_NAME *a,
+ const GENERAL_NAME *b);