Commit 72e319bd authored by Howard Chu's avatar Howard Chu
Browse files

ITS#5892 return -1 from ldif_read_record on error

parent 5b98495d
......@@ -240,7 +240,7 @@ main( int argc, char **argv )
FILE *rejfp;
struct LDIFFP *ldiffp, ldifdummy = {0};
char *matched_msg, *error_msg;
int rc, retval;
int rc, retval, ldifrc;
int len;
int i = 0;
int lineno, nextline = 0, lmax = 0;
......@@ -326,8 +326,8 @@ main( int argc, char **argv )
rc = 0;
retval = 0;
lineno = 1;
while (( rc == 0 || contoper ) && ldif_read_record( ldiffp, &nextline,
&rbuf, &lmax ))
while (( rc == 0 || contoper ) && ( ldifrc = ldif_read_record( ldiffp, &nextline,
&rbuf, &lmax )) > 0 )
{
if ( rejfp ) {
len = strlen( rbuf );
......@@ -369,6 +369,9 @@ main( int argc, char **argv )
}
ber_memfree( rbuf );
if ( ldifrc < 0 )
retval = LDAP_OTHER;
#ifdef LDAP_X_TXN
if( retval == 0 && txn ) {
rc = ldap_set_option( ld, LDAP_OPT_SERVER_CONTROLS, NULL );
......
......@@ -780,7 +780,8 @@ ldif_close(
#define LDIF_MAXLINE 4096
/*
* ldif_read_record - read an ldif record. Return 1 for success, 0 for EOF.
* ldif_read_record - read an ldif record. Return 1 for success, 0 for EOF,
* -1 for error.
*/
int
ldif_read_record(
......@@ -882,7 +883,7 @@ ldif_read_record(
*/
ber_pvt_log_printf( LDAP_DEBUG_ANY, ldif_debug,
_("ldif_read_record: include %s failed\n"), ptr );
return 0;
return -1;
}
}
}
......
......@@ -659,7 +659,7 @@ read_baseObject(
{
backsql_info *bi = (backsql_info *)be->be_private;
LDIFFP *fp;
int rc = 0, lineno = 0, lmax = 0;
int rc = 0, lineno = 0, lmax = 0, ldifrc;
char *buf = NULL;
assert( fname != NULL );
......@@ -685,7 +685,7 @@ read_baseObject(
bi->sql_baseObject->e_nname = be->be_nsuffix[0];
bi->sql_baseObject->e_attrs = NULL;
while ( ldif_read_record( fp, &lineno, &buf, &lmax ) ) {
while (( ldifrc = ldif_read_record( fp, &lineno, &buf, &lmax )) > 0 ) {
Entry *e = str2entry( buf );
Attribute *a;
......@@ -704,7 +704,7 @@ read_baseObject(
"dn=\"%s\" (line=%d)\n",
e->e_name.bv_val, lineno );
entry_free( e );
rc = EXIT_FAILURE;
rc = LDAP_OTHER;
break;
}
......@@ -729,6 +729,9 @@ read_baseObject(
}
}
if ( ldifrc < 0 )
rc = LDAP_OTHER;
if ( rc ) {
entry_free( bi->sql_baseObject );
bi->sql_baseObject = NULL;
......
......@@ -401,7 +401,7 @@ int
root_dse_read_file( const char *fname )
{
struct LDIFFP *fp;
int rc = 0, lineno = 0, lmax = 0;
int rc = 0, lineno = 0, lmax = 0, ldifrc;
char *buf = NULL;
if ( (fp = ldif_open( fname, "r" )) == NULL ) {
......@@ -421,7 +421,7 @@ root_dse_read_file( const char *fname )
}
usr_attr->e_attrs = NULL;
while( ldif_read_record( fp, &lineno, &buf, &lmax ) ) {
while(( ldifrc = ldif_read_record( fp, &lineno, &buf, &lmax )) > 0 ) {
Entry *e = str2entry( buf );
Attribute *a;
......@@ -429,7 +429,7 @@ root_dse_read_file( const char *fname )
Debug( LDAP_DEBUG_ANY, "root_dse_read_file: "
"could not parse entry (file=\"%s\" line=%d)\n",
fname, lineno, 0 );
rc = EXIT_FAILURE;
rc = LDAP_OTHER;
break;
}
......@@ -440,7 +440,7 @@ root_dse_read_file( const char *fname )
"- dn=\"%s\" (file=\"%s\" line=%d)\n",
e->e_dn, fname, lineno );
entry_free( e );
rc = EXIT_FAILURE;
rc = LDAP_OTHER;
break;
}
......@@ -463,6 +463,9 @@ root_dse_read_file( const char *fname )
if (rc) break;
}
if ( ldifrc < 0 )
rc = LDAP_OTHER;
if (rc) {
entry_free( usr_attr );
usr_attr = NULL;
......
......@@ -64,7 +64,7 @@ slapadd( int argc, char **argv )
int match;
int checkvals;
int lineno, nextline;
int lineno, nextline, ldifrc;
int lmax;
int rc = EXIT_SUCCESS;
int manage = 0;
......@@ -142,7 +142,7 @@ slapadd( int argc, char **argv )
}
/* nextline is the line number of the end of the current entry */
for( lineno=1; ldif_read_record( ldiffp, &nextline, &buf, &lmax );
for( lineno=1; ( ldifrc = ldif_read_record( ldiffp, &nextline, &buf, &lmax )) > 0;
lineno=nextline+1 )
{
BackendDB *bd;
......@@ -403,6 +403,9 @@ slapadd( int argc, char **argv )
entry_free( e );
}
if ( ldifrc < 0 )
rc = EXIT_FAILURE;
bvtext.bv_len = textlen;
bvtext.bv_val = textbuf;
bvtext.bv_val[0] = '\0';
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment