]> git.ipfire.org Git - thirdparty/openldap.git/commitdiff
ITS#9160 OOM handling in test programs
authorOndřej Kuzník <ondra@mistotebe.net>
Thu, 30 Jan 2020 08:58:50 +0000 (08:58 +0000)
committerOndřej Kuzník <ondra@mistotebe.net>
Fri, 7 Feb 2020 09:46:52 +0000 (09:46 +0000)
tests/progs/slapd-bind.c
tests/progs/slapd-modrdn.c
tests/progs/slapd-mtread.c
tests/progs/slapd-read.c
tests/progs/slapd-search.c

index c9e3210b065669c59a240202d70422e0069bdca2..a832e809c1d80e224ec0f76f0defae822f0f030e 100644 (file)
@@ -412,11 +412,19 @@ do_base( struct tester_conn_args *config, char *dn, char *base, char *filter, ch
                        case LDAP_RES_SEARCH_ENTRY:
                                rc = ldap_get_dn_ber( ld, msg, &ber, &bv );
                                dns = realloc( dns, (ndns + 1)*sizeof(char *) );
+                               if ( !dns ) {
+                                       tester_error( "realloc failed" );
+                                       exit( EXIT_FAILURE );
+                               }
                                dns[ndns] = ber_strdup( bv.bv_val );
                                if ( pwattr != NULL ) {
                                        struct berval   **values = ldap_get_values_len( ld, msg, pwattr );
 
                                        creds = realloc( creds, (ndns + 1)*sizeof(struct berval) );
+                                       if ( !creds ) {
+                                               tester_error( "realloc failed" );
+                                               exit( EXIT_FAILURE );
+                                       }
                                        if ( values == NULL ) {
 novals:;
                                                creds[ndns].bv_len = 0;
index 5bd823d72a3e17621b509865817eb9f80fc6f3b6..d82d82c69e10aaf19dacbf18843532dd26f0b1ed 100644 (file)
@@ -125,6 +125,10 @@ do_modrdn( struct tester_conn_args *config,
 
        DNs[0] = entry;
        DNs[1] = strdup( entry );
+       if ( DNs[1] == NULL ) {
+               tester_error( "strdup failed" );
+               exit( EXIT_FAILURE );
+       }
 
        /* reverse the RDN, make new DN */
        p1 = strchr( entry, '=' ) + 1;
@@ -132,6 +136,10 @@ do_modrdn( struct tester_conn_args *config,
 
        *p2 = '\0';
        rdns[1] = strdup( entry );
+       if ( rdns[1] == NULL ) {
+               tester_error( "strdup failed" );
+               exit( EXIT_FAILURE );
+       }
        *p2-- = ',';
 
        for (i = p1 - entry;p2 >= p1;)
@@ -139,6 +147,10 @@ do_modrdn( struct tester_conn_args *config,
        
        DNs[1][i] = '\0';
        rdns[0] = strdup( DNs[1] );
+       if ( rdns[0] == NULL ) {
+               tester_error( "strdup failed" );
+               exit( EXIT_FAILURE );
+       }
        DNs[1][i] = ',';
 
        i = 0;
index 1b421af00b6931b6a64d9ea0d1cb8b2d77b9688a..c8024cb6e1769e60eb3bcf9f16c620ce9ab9e6b5 100644 (file)
@@ -531,6 +531,10 @@ do_random( LDAP *ld,
                }
 
                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 ) )
                {
                        values[ i ] = ldap_get_dn( ld, e );
index 4023a22d279e5cac284c44a2761d2cc7177e47a4..f95228317b1cb82eb4a9c9e8fc150a2da61ca4ac 100644 (file)
@@ -202,6 +202,10 @@ do_random( struct tester_conn_args *config, char *sbase, char *filter,
                }
 
                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 ) )
                {
                        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 */
        if ( swamp > 1 ) {
                msgids = (int *)calloc( sizeof(int), maxloop );
+               if ( !msgids ) {
+                       tester_error( "calloc failed" );
+                       exit( EXIT_FAILURE );
+               }
        }
 
 retry:;
index 8f791d6b3cb730f972154e577a85f8c659f6d8ce..321fd80e388e18990cf346b70832cf0d579ed275 100644 (file)
@@ -226,6 +226,10 @@ do_random( struct tester_conn_args *config,
                                int j;
 
                                values = realloc( values, ( nvalues + n + 1 )*sizeof( char * ) );
+                               if ( !values ) {
+                                       tester_error( "realloc failed" );
+                                       exit( EXIT_FAILURE );
+                               }
                                for ( j = 0; j < n; j++ ) {
                                        values[ nvalues + j ] = strdup( v[ j ]->bv_val );
                                }
@@ -298,6 +302,10 @@ do_search( struct tester_conn_args *config,
        /* make room for msgid */
        if ( swamp > 1 ) {
                msgids = (int *)calloc( sizeof(int), innerloop );
+               if ( !msgids ) {
+                       tester_error( "calloc failed" );
+                       exit( EXIT_FAILURE );
+               }
        }
 
 retry:;