From 13e0b0e0bbdfcaf4c83f41709d19877151679efe Mon Sep 17 00:00:00 2001
From: Quanah Gibson-Mount <quanah@openldap.org>
Date: Tue, 11 Nov 2008 20:30:37 +0000
Subject: [PATCH] ITS#5803

---
 CHANGES                |  1 +
 servers/slapd/filter.c | 13 +++++++++++++
 2 files changed, 14 insertions(+)

diff --git a/CHANGES b/CHANGES
index 08d9593afb..0b266a2df5 100644
--- a/CHANGES
+++ b/CHANGES
@@ -14,6 +14,7 @@ OpenLDAP 2.4.13 Engineering
 	Fixed slapd control criticality (ITS#5785)
 	Added slapd dn.this search limits (ITS#5734)
 	Fixed slapd error status on shutdown (ITS#5745)
+	Fixed slapd filter substring handling (ITS#5803)
 	Fixed slapd nameUIDPretty bitstring parsing (ITS#5750)
 	Fixed slapd null termination of password (ITS#5794)
 	Fixed slapd overlay/database open with real structure (ITS#5724)
diff --git a/servers/slapd/filter.c b/servers/slapd/filter.c
index bf855f5734..fd6af57c6d 100644
--- a/servers/slapd/filter.c
+++ b/servers/slapd/filter.c
@@ -385,6 +385,19 @@ get_ssa(
 
 	rc = LDAP_PROTOCOL_ERROR;
 
+	if ( ssa.sa_desc->ad_type->sat_substr == NULL ) {
+		for ( tag = ber_first_element( ber, &len, &last );
+			tag != LBER_DEFAULT;
+			tag = ber_next_element( ber, &len, last ) )
+		{
+			/* eat all */
+			rc = ber_scanf( ber, "x" );
+		}
+
+		rc = LDAP_INVALID_SYNTAX;
+		goto return_error;
+	}
+
 	for ( tag = ber_first_element( ber, &len, &last );
 		tag != LBER_DEFAULT;
 		tag = ber_next_element( ber, &len, last ) )
-- 
GitLab