mirror of
https://git.openldap.org/openldap/openldap.git
synced 2025-12-20 22:59:34 -05:00
ITS#9160 OOM handling in test programs
This commit is contained in:
parent
28828e1b40
commit
9835662927
5 changed files with 40 additions and 0 deletions
|
|
@ -412,11 +412,19 @@ do_base( struct tester_conn_args *config, char *dn, char *base, char *filter, ch
|
||||||
case LDAP_RES_SEARCH_ENTRY:
|
case LDAP_RES_SEARCH_ENTRY:
|
||||||
rc = ldap_get_dn_ber( ld, msg, &ber, &bv );
|
rc = ldap_get_dn_ber( ld, msg, &ber, &bv );
|
||||||
dns = realloc( dns, (ndns + 1)*sizeof(char *) );
|
dns = realloc( dns, (ndns + 1)*sizeof(char *) );
|
||||||
|
if ( !dns ) {
|
||||||
|
tester_error( "realloc failed" );
|
||||||
|
exit( EXIT_FAILURE );
|
||||||
|
}
|
||||||
dns[ndns] = ber_strdup( bv.bv_val );
|
dns[ndns] = ber_strdup( bv.bv_val );
|
||||||
if ( pwattr != NULL ) {
|
if ( pwattr != NULL ) {
|
||||||
struct berval **values = ldap_get_values_len( ld, msg, pwattr );
|
struct berval **values = ldap_get_values_len( ld, msg, pwattr );
|
||||||
|
|
||||||
creds = realloc( creds, (ndns + 1)*sizeof(struct berval) );
|
creds = realloc( creds, (ndns + 1)*sizeof(struct berval) );
|
||||||
|
if ( !creds ) {
|
||||||
|
tester_error( "realloc failed" );
|
||||||
|
exit( EXIT_FAILURE );
|
||||||
|
}
|
||||||
if ( values == NULL ) {
|
if ( values == NULL ) {
|
||||||
novals:;
|
novals:;
|
||||||
creds[ndns].bv_len = 0;
|
creds[ndns].bv_len = 0;
|
||||||
|
|
|
||||||
|
|
@ -125,6 +125,10 @@ do_modrdn( struct tester_conn_args *config,
|
||||||
|
|
||||||
DNs[0] = entry;
|
DNs[0] = entry;
|
||||||
DNs[1] = strdup( entry );
|
DNs[1] = strdup( entry );
|
||||||
|
if ( DNs[1] == NULL ) {
|
||||||
|
tester_error( "strdup failed" );
|
||||||
|
exit( EXIT_FAILURE );
|
||||||
|
}
|
||||||
|
|
||||||
/* reverse the RDN, make new DN */
|
/* reverse the RDN, make new DN */
|
||||||
p1 = strchr( entry, '=' ) + 1;
|
p1 = strchr( entry, '=' ) + 1;
|
||||||
|
|
@ -132,6 +136,10 @@ do_modrdn( struct tester_conn_args *config,
|
||||||
|
|
||||||
*p2 = '\0';
|
*p2 = '\0';
|
||||||
rdns[1] = strdup( entry );
|
rdns[1] = strdup( entry );
|
||||||
|
if ( rdns[1] == NULL ) {
|
||||||
|
tester_error( "strdup failed" );
|
||||||
|
exit( EXIT_FAILURE );
|
||||||
|
}
|
||||||
*p2-- = ',';
|
*p2-- = ',';
|
||||||
|
|
||||||
for (i = p1 - entry;p2 >= p1;)
|
for (i = p1 - entry;p2 >= p1;)
|
||||||
|
|
@ -139,6 +147,10 @@ do_modrdn( struct tester_conn_args *config,
|
||||||
|
|
||||||
DNs[1][i] = '\0';
|
DNs[1][i] = '\0';
|
||||||
rdns[0] = strdup( DNs[1] );
|
rdns[0] = strdup( DNs[1] );
|
||||||
|
if ( rdns[0] == NULL ) {
|
||||||
|
tester_error( "strdup failed" );
|
||||||
|
exit( EXIT_FAILURE );
|
||||||
|
}
|
||||||
DNs[1][i] = ',';
|
DNs[1][i] = ',';
|
||||||
|
|
||||||
i = 0;
|
i = 0;
|
||||||
|
|
|
||||||
|
|
@ -531,6 +531,10 @@ do_random( LDAP *ld,
|
||||||
}
|
}
|
||||||
|
|
||||||
values = malloc( ( nvalues + 1 ) * sizeof( char * ) );
|
values = malloc( ( nvalues + 1 ) * sizeof( char * ) );
|
||||||
|
if (values == NULL) {
|
||||||
|
thread_error( idx, "(failed to malloc)");
|
||||||
|
exit( EXIT_FAILURE );
|
||||||
|
}
|
||||||
for ( i = 0, e = ldap_first_entry( ld, res ); e != NULL; i++, e = ldap_next_entry( ld, e ) )
|
for ( i = 0, e = ldap_first_entry( ld, res ); e != NULL; i++, e = ldap_next_entry( ld, e ) )
|
||||||
{
|
{
|
||||||
values[ i ] = ldap_get_dn( ld, e );
|
values[ i ] = ldap_get_dn( ld, e );
|
||||||
|
|
|
||||||
|
|
@ -202,6 +202,10 @@ do_random( struct tester_conn_args *config, char *sbase, char *filter,
|
||||||
}
|
}
|
||||||
|
|
||||||
values = malloc( ( nvalues + 1 ) * sizeof( char * ) );
|
values = malloc( ( nvalues + 1 ) * sizeof( char * ) );
|
||||||
|
if ( !values ) {
|
||||||
|
tester_error( "malloc failed" );
|
||||||
|
exit( EXIT_FAILURE );
|
||||||
|
}
|
||||||
for ( i = 0, e = ldap_first_entry( ld, res ); e != NULL; i++, e = ldap_next_entry( ld, e ) )
|
for ( i = 0, e = ldap_first_entry( ld, res ); e != NULL; i++, e = ldap_next_entry( ld, e ) )
|
||||||
{
|
{
|
||||||
values[ i ] = ldap_get_dn( ld, e );
|
values[ i ] = ldap_get_dn( ld, e );
|
||||||
|
|
@ -251,6 +255,10 @@ do_read( struct tester_conn_args *config, char *entry, LDAP **ldp,
|
||||||
/* make room for msgid */
|
/* make room for msgid */
|
||||||
if ( swamp > 1 ) {
|
if ( swamp > 1 ) {
|
||||||
msgids = (int *)calloc( sizeof(int), maxloop );
|
msgids = (int *)calloc( sizeof(int), maxloop );
|
||||||
|
if ( !msgids ) {
|
||||||
|
tester_error( "calloc failed" );
|
||||||
|
exit( EXIT_FAILURE );
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
retry:;
|
retry:;
|
||||||
|
|
|
||||||
|
|
@ -226,6 +226,10 @@ do_random( struct tester_conn_args *config,
|
||||||
int j;
|
int j;
|
||||||
|
|
||||||
values = realloc( values, ( nvalues + n + 1 )*sizeof( char * ) );
|
values = realloc( values, ( nvalues + n + 1 )*sizeof( char * ) );
|
||||||
|
if ( !values ) {
|
||||||
|
tester_error( "realloc failed" );
|
||||||
|
exit( EXIT_FAILURE );
|
||||||
|
}
|
||||||
for ( j = 0; j < n; j++ ) {
|
for ( j = 0; j < n; j++ ) {
|
||||||
values[ nvalues + j ] = strdup( v[ j ]->bv_val );
|
values[ nvalues + j ] = strdup( v[ j ]->bv_val );
|
||||||
}
|
}
|
||||||
|
|
@ -298,6 +302,10 @@ do_search( struct tester_conn_args *config,
|
||||||
/* make room for msgid */
|
/* make room for msgid */
|
||||||
if ( swamp > 1 ) {
|
if ( swamp > 1 ) {
|
||||||
msgids = (int *)calloc( sizeof(int), innerloop );
|
msgids = (int *)calloc( sizeof(int), innerloop );
|
||||||
|
if ( !msgids ) {
|
||||||
|
tester_error( "calloc failed" );
|
||||||
|
exit( EXIT_FAILURE );
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
retry:;
|
retry:;
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue