]> git.sur5r.net Git - openldap/commitdiff
ITS#2218: fix empty values w/ spaces
authorKurt Zeilenga <kurt@openldap.org>
Mon, 2 Dec 2002 04:19:01 +0000 (04:19 +0000)
committerKurt Zeilenga <kurt@openldap.org>
Mon, 2 Dec 2002 04:19:01 +0000 (04:19 +0000)
libraries/libldif/line64.c

index 3f16c95d600a5a24c213d1dae8d76f0b99d04582..9160588e69a1c732d3541b0efebc4913c390d93c 100644 (file)
@@ -119,11 +119,11 @@ ldif_parse_line(
                value = "";
                vlen = 0;
                goto done;
-       }
-               
-       if ( *s == '<' ) {
+
+       } else if ( *s == '<' ) {
                s++;
                url = 1;
+
        } else if ( *s == ':' ) {
                /* base 64 encoded value */
                s++;
@@ -142,20 +142,19 @@ ldif_parse_line(
        }
        *d = '\0';
 
-       /* if no value is present, error out */
-       if ( *s == '\0' ) {
-               ber_pvt_log_printf( LDAP_DEBUG_PARSE, ldif_debug,
-                       "ldif_parse_line: %s missing %svalue\n", type,
-                               url ? "URL " : b64 ? "base64 " : "" );
-               value = NULL;
-               vlen = 0;
-               goto done;
-       }
-
        if ( b64 ) {
                char *byte = s;
 
-               value = s;
+               if ( *s == '\0' ) {
+                       /* no value is present, error out */
+                       ber_pvt_log_printf( LDAP_DEBUG_PARSE, ldif_debug,
+                               "ldif_parse_line: %s missing base64 value\n", type );
+                       value = NULL;
+                       vlen = 0;
+                       goto done;
+               }
+
+               byte = value = s;
 
                for ( p = s, vlen = 0; p < d; p += 4, vlen += 3 ) {
                        int i;
@@ -199,6 +198,15 @@ ldif_parse_line(
                s[ vlen ] = '\0';
 
        } else if ( url ) {
+               if ( *s == '\0' ) {
+                       /* no value is present, error out */
+                       ber_pvt_log_printf( LDAP_DEBUG_PARSE, ldif_debug,
+                               "ldif_parse_line: %s missing URL value\n", type );
+                       value = NULL;
+                       vlen = 0;
+                       goto done;
+               }
+
                if( ldif_fetch_url( s, &value, &vlen ) ) {
                        ber_pvt_log_printf( LDAP_DEBUG_ANY, ldif_debug,
                                "ldif_parse_line: %s: URL \"%s\" fetch failed\n",