ITS#2865 don't try to calloc 0 bytes, log an error and return instead.

Don't crash in slapcat when NULL entry is returned.
This commit is contained in:
Howard Chu 2003-12-09 20:10:44 +00:00
parent 67ee75ccd8
commit cc743d2c1f
2 changed files with 17 additions and 7 deletions

View file

@ -659,6 +659,16 @@ int entry_decode(struct berval *bv, Entry **e)
BerVarray bptr;
i = entry_getlen(&ptr);
if (!i) {
#ifdef NEW_LOGGING
LDAP_LOG( OPERATION, INFO,
"entry_decode: entry length was zero\n", 0, 0, 0);
#else
Debug( LDAP_DEBUG_ANY,
"entry_decode: entry length was zero\n", 0, 0, 0);
#endif
return LDAP_OTHER;
}
x = ch_calloc(1, i);
i = entry_getlen(&ptr);
x->e_name.bv_val = (char *) ptr;

View file

@ -66,6 +66,13 @@ main( int argc, char **argv )
Entry* e = be->be_entry_get( be, id );
op.o_bd = be;
if ( e == NULL ) {
printf("# no data for entry id=%08lx\n\n", (long) id );
rc = EXIT_FAILURE;
if( continuemode ) continue;
break;
}
if( sub_ndn.bv_len && !dnIsSuffix( &e->e_nname, &sub_ndn ) ) {
be_entry_release_r( &op, e );
continue;
@ -89,13 +96,6 @@ main( int argc, char **argv )
printf( "# id=%08lx\n", (long) id );
}
if ( e == NULL ) {
printf("# no data for entry id=%08lx\n\n", (long) id );
rc = EXIT_FAILURE;
if( continuemode ) continue;
break;
}
data = entry2str( e, &len );
be_entry_release_r( &op, e );