diff --git a/libraries/libldif/line64.c b/libraries/libldif/line64.c
index 3f16c95d600a5a24c213d1dae8d76f0b99d04582..9160588e69a1c732d3541b0efebc4913c390d93c 100644
--- a/libraries/libldif/line64.c
+++ b/libraries/libldif/line64.c
@@ -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",