Free memory on bind / select failed
authorAlan T. DeKok <aland@freeradius.org>
Sat, 2 Mar 2013 14:57:27 +0000 (09:57 -0500)
committerAlan T. DeKok <aland@freeradius.org>
Sat, 2 Mar 2013 15:12:41 +0000 (10:12 -0500)
src/modules/rlm_sql/drivers/rlm_sql_sybase/rlm_sql_sybase.c

index c9a3381..128595d 100644 (file)
@@ -685,6 +685,12 @@ static int sql_select_query(rlm_sql_handle_t *handle, rlm_sql_config_t *config,
 
                                /* Associate the target buffer with the data */
                                if (ct_bind(sybase_sock->command, i+1, &descriptor, rowdata[i], NULL, NULL) != CS_SUCCEED) {
+                                       int j;
+
+                                       for (j = 0; j <= i; j++) {
+                                               free(rowdata[j]);
+                                       }
+                                       free(rowdata);
                                        radlog(L_ERR,"rlm_sql_sybase(sql_select_query): ct_bind() failed)\n%s",
                                                        sql_error(handle, config));
                                        return -1;