[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 ) {
>
>
>
>