mirror of
https://git.openldap.org/openldap/openldap.git
synced 2025-12-28 18:49:34 -05:00
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:
parent
67ee75ccd8
commit
cc743d2c1f
2 changed files with 17 additions and 7 deletions
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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 );
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue