[Date Prev][Date Next] [Chronological] [Thread] [Top]

Re: LDIF continuation line bug (ITS#302)



Thanks... applied to devel and releng 1.2.
	Kurt

At 11:56 PM 9/23/99 GMT, paul@originative.co.uk wrote:
>Full_Name: Paul Richards
>Version: 1.2.7
>OS: FreeBSD
>URL: ftp://ftp.openldap.org/incoming/
>Submission from: (NULL) (194.217.50.234)
>
>
>The ldif library function str_getline() in line64.c converts a continuation line
>into a single non-space binary character and will return a valid string
>containing that one character.
>
>When this string is passed to str_parse_line() the code that removes
>continuation lines is after the code that checks whether the value is null. This
>means that str_parse_line(), instead of returning an error returns a valid
>attribute of length 0.
>
>Removing the continuation character before checking for null length fixes the
>problem. Diff included below.
>
>--- line64.c	Tue Mar  2 18:30:05 1999
>+++ /a/home/paul/ldap/libraries/libldif/line64.c	Fri Sep 24 00:22:30 1999
>@@ -93,18 +93,18 @@
> 		s++;
> 	}
> 
>-	/* if no value is present, error out */
>-	if ( *s == '\0' ) {
>-		Debug( LDAP_DEBUG_PARSE, "parse_line missing value\n", 0,0,0 );
>-		return( -1 );
>-	}
>-
> 	/* check for continued line markers that should be deleted */
> 	for ( p = s, d = s; *p; p++ ) {
> 		if ( *p != CONTINUED_LINE_MARKER )
> 			*d++ = *p;
> 	}
> 	*d = '\0';
>+
>+	/* if no value is present, error out */
>+	if ( *s == '\0' ) {
>+		Debug( LDAP_DEBUG_PARSE, "parse_line missing value\n", 0,0,0 );
>+		return( -1 );
>+	}
> 
> 	*value = s;
> 	if ( b64 ) {
>
>
>
>