value = "";
                vlen = 0;
                goto done;
-       }
-               
-       if ( *s == '<' ) {
+
+       } else if ( *s == '<' ) {
                s++;
                url = 1;
+
        } else if ( *s == ':' ) {
                /* base 64 encoded value */
                s++;
        }
        *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;
                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",