From 4d12915b80a8e5b02db54d4016707a3ffe99f0b7 Mon Sep 17 00:00:00 2001
From: Kurt Zeilenga <kurt@openldap.org>
Date: Mon, 30 Oct 2000 18:57:28 +0000
Subject: [PATCH] Import whitespace sqeeze

---
 servers/slapd/dn.c | 14 +++++++++++---
 1 file changed, 11 insertions(+), 3 deletions(-)

diff --git a/servers/slapd/dn.c b/servers/slapd/dn.c
index a20d5a2cb5..a5ff45d71b 100644
--- a/servers/slapd/dn.c
+++ b/servers/slapd/dn.c
@@ -34,10 +34,11 @@
  */
 
 char *
-dn_validate( char *dn )
+dn_validate( char *dn_in )
 {
 	char	*d, *s;
 	int	state, gotesc;
+	char	*dn = dn_in;
 
 	gotesc = 0;
 	state = B4LEADTYPE;
@@ -121,7 +122,7 @@ dn_validate( char *dn )
 			    !RDN_SEPARATOR( *s ) ) {
 				*--d = *s;
 				d++;
-			} else {
+			} else if( !ASCII_SPACE( *s ) || !ASCII_SPACE( *(d - 1) ) ) {
 				*d++ = *s;
 			}
 			break;
@@ -133,7 +134,7 @@ dn_validate( char *dn )
 			} else if ( gotesc && !RDN_NEEDSESCAPE( *s ) ) {
 				*--d = *s;
 				d++;
-			} else {
+			} else if( !ASCII_SPACE( *s ) || !ASCII_SPACE( *(d - 1) ) ) {
 				*d++ = *s;
 			}
 			break;
@@ -142,6 +143,8 @@ dn_validate( char *dn )
 			if ( RDN_SEPARATOR( *s ) ) {
 				state = B4TYPE;
 				*d++ = *s;
+			} else if ( !ASCII_SPACE( *s ) ) {
+				dn = NULL;
 			}
 			break;
 
@@ -158,6 +161,11 @@ dn_validate( char *dn )
 			gotesc = 0;
 		}
 	}
+
+	/* trim trailing spaces */
+	while( d > dn_in && ASCII_SPACE( *(d-1) ) ) {
+		--d;
+	}
 	*d = '\0';
 
 	if( gotesc ) {
-- 
GitLab