summaryrefslogtreecommitdiff
path: root/src/lib
diff options
context:
space:
mode:
authortb <>2021-12-28 15:59:13 +0000
committertb <>2021-12-28 15:59:13 +0000
commit4cb6e8841ebb2057eb6551992c46f0a401569801 (patch)
treebfdc765c3802af50aa51ec0046deaae839512b03 /src/lib
parent5491024cb5cfc8b5ad8ead3147278f4272d612f9 (diff)
downloadopenbsd-4cb6e8841ebb2057eb6551992c46f0a401569801.tar.gz
openbsd-4cb6e8841ebb2057eb6551992c46f0a401569801.tar.bz2
openbsd-4cb6e8841ebb2057eb6551992c46f0a401569801.zip
Check for trailing garbage in X509_addr_get_afi()
Per RFC 3779 2.2.3.3, the addressFamily field contains the 2-byte AFI and an optional 1-byte SAFI. Nothing else. The optional SAFI is nowhere exposed in the API. It is used expliclty only for pretty printing. There are implicit uses in a few places, notably for sorting/comparing where trailing garbage would be erroneously taken into account. Erroring in this situation will let us avoid this in upcoming revisions. ok inoguchi jsing
Diffstat (limited to 'src/lib')
-rw-r--r--src/lib/libcrypto/x509/x509_addr.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/src/lib/libcrypto/x509/x509_addr.c b/src/lib/libcrypto/x509/x509_addr.c
index 64dd830514..fda73b304e 100644
--- a/src/lib/libcrypto/x509/x509_addr.c
+++ b/src/lib/libcrypto/x509/x509_addr.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: x509_addr.c,v 1.29 2021/12/28 15:49:11 tb Exp $ */ 1/* $OpenBSD: x509_addr.c,v 1.30 2021/12/28 15:59:13 tb Exp $ */
2/* 2/*
3 * Contributed to the OpenSSL Project by the American Registry for 3 * Contributed to the OpenSSL Project by the American Registry for
4 * Internet Numbers ("ARIN"). 4 * Internet Numbers ("ARIN").
@@ -354,6 +354,10 @@ X509v3_addr_get_afi(const IPAddressFamily *f)
354 if (!CBS_get_u16(&cbs, &afi)) 354 if (!CBS_get_u16(&cbs, &afi))
355 return 0; 355 return 0;
356 356
357 /* One byte for the optional SAFI, everything else is garbage. */
358 if (CBS_len(&cbs) > 1)
359 return 0;
360
357 return afi; 361 return afi;
358} 362}
359 363