From: Kevin Day Date: Fri, 28 Feb 2020 04:30:54 +0000 (-0600) Subject: Security: fix memory leaks in FSS read programs X-Git-Tag: 0.5.0~356 X-Git-Url: https://git.kevux.org/?a=commitdiff_plain;h=469fb3456c57a7c0e7d2673a62325f0c01dabc52;p=fll Security: fix memory leaks in FSS read programs --- diff --git a/level_3/fss_basic_list_read/c/fss_basic_list_read.c b/level_3/fss_basic_list_read/c/fss_basic_list_read.c index 9fb0867..64d8412 100644 --- a/level_3/fss_basic_list_read/c/fss_basic_list_read.c +++ b/level_3/fss_basic_list_read/c/fss_basic_list_read.c @@ -145,6 +145,7 @@ extern "C" { fl_color_print(f_standard_error, data->context.notable, data->context.reset, "--%s", fss_basic_list_read_long_at); fl_color_print_line(f_standard_error, data->context.error, data->context.reset, "' requires a positive number."); + fss_basic_list_read_delete_data(data); return f_status_set_error(f_invalid_parameter); } @@ -153,6 +154,7 @@ extern "C" { fl_color_print(f_standard_error, data->context.notable, data->context.reset, "--%s", fss_basic_list_read_long_depth); fl_color_print_line(f_standard_error, data->context.error, data->context.reset, "' requires a positive number."); + fss_basic_list_read_delete_data(data); return f_status_set_error(f_invalid_parameter); } @@ -161,6 +163,7 @@ extern "C" { fl_color_print(f_standard_error, data->context.notable, data->context.reset, "--%s", fss_basic_list_read_long_line); fl_color_print_line(f_standard_error, data->context.error, data->context.reset, "' requires a positive number."); + fss_basic_list_read_delete_data(data); return f_status_set_error(f_invalid_parameter); } @@ -169,6 +172,7 @@ extern "C" { fl_color_print(f_standard_error, data->context.notable, data->context.reset, "--%s", fss_basic_list_read_long_name); fl_color_print_line(f_standard_error, data->context.error, data->context.reset, "' requires a string."); + fss_basic_list_read_delete_data(data); return f_status_set_error(f_invalid_parameter); } @@ -177,6 +181,7 @@ extern "C" { fl_color_print(f_standard_error, data->context.notable, data->context.reset, "--%s", fss_basic_list_read_long_select); fl_color_print_line(f_standard_error, data->context.error, data->context.reset, "' requires a positive number."); + fss_basic_list_read_delete_data(data); return f_status_set_error(f_invalid_parameter); } @@ -188,6 +193,7 @@ extern "C" { fl_color_print(f_standard_error, data->context.notable, data->context.reset, "--%s", fss_basic_list_read_long_line); fl_color_print_line(f_standard_error, data->context.error, data->context.reset, "' parameter."); + fss_basic_list_read_delete_data(data); return f_status_set_error(f_invalid_parameter); } @@ -198,6 +204,7 @@ extern "C" { fl_color_print(f_standard_error, data->context.notable, data->context.reset, "--%s", fss_basic_list_read_long_select); fl_color_print_line(f_standard_error, data->context.error, data->context.reset, "' parameter."); + fss_basic_list_read_delete_data(data); return f_status_set_error(f_invalid_parameter); } } @@ -210,6 +217,7 @@ extern "C" { fl_color_print(f_standard_error, data->context.notable, data->context.reset, "--%s", fss_basic_list_read_long_total); fl_color_print_line(f_standard_error, data->context.error, data->context.reset, "' parameter."); + fss_basic_list_read_delete_data(data); return f_status_set_error(f_invalid_parameter); } } @@ -228,11 +236,16 @@ extern "C" { // This standard does not support nesting, so any depth greater than 0 can be predicted without processing the file. if (depths.array[0].depth > 0) { + macro_fss_basic_list_read_depths_delete_simple(depths); + if (data->parameters[fss_basic_list_read_parameter_total].result == f_console_result_found) { fprintf(f_standard_output, "0%c", f_string_eol); + + fss_basic_list_read_delete_data(data); return f_none; } + fss_basic_list_read_delete_data(data); return f_none; } @@ -240,6 +253,9 @@ extern "C" { fl_color_print(f_standard_error, data->context.error, data->context.reset, "ERROR: the '"); fl_color_print(f_standard_error, data->context.notable, data->context.reset, "--%s", fss_basic_list_read_long_select); fl_color_print_line(f_standard_error, data->context.error, data->context.reset, "' parameter requires a positive number."); + + macro_fss_basic_list_read_depths_delete_simple(depths); + fss_basic_list_read_delete_data(data); return f_status_set_error(f_invalid_parameter); } @@ -252,6 +268,7 @@ extern "C" { if (f_status_is_error(status)) { fss_basic_list_read_print_file_error(data->context, "fl_file_read_fifo", "-", f_status_set_fine(status)); + macro_fss_basic_list_read_depths_delete_simple(depths); fss_basic_list_read_delete_data(data); return status; diff --git a/level_3/fss_basic_read/c/fss_basic_read.c b/level_3/fss_basic_read/c/fss_basic_read.c index 695bd29..28a4b21 100644 --- a/level_3/fss_basic_read/c/fss_basic_read.c +++ b/level_3/fss_basic_read/c/fss_basic_read.c @@ -145,6 +145,7 @@ extern "C" { fl_color_print(f_standard_error, data->context.notable, data->context.reset, "--%s", fss_basic_read_long_at); fl_color_print_line(f_standard_error, data->context.error, data->context.reset, "' requires a positive number."); + fss_basic_read_delete_data(data); return f_status_set_error(f_invalid_parameter); } @@ -153,6 +154,7 @@ extern "C" { fl_color_print(f_standard_error, data->context.notable, data->context.reset, "--%s", fss_basic_read_long_depth); fl_color_print_line(f_standard_error, data->context.error, data->context.reset, "' requires a positive number."); + fss_basic_read_delete_data(data); return f_status_set_error(f_invalid_parameter); } @@ -161,6 +163,7 @@ extern "C" { fl_color_print(f_standard_error, data->context.notable, data->context.reset, "--%s", fss_basic_read_long_line); fl_color_print_line(f_standard_error, data->context.error, data->context.reset, "' requires a positive number."); + fss_basic_read_delete_data(data); return f_status_set_error(f_invalid_parameter); } @@ -169,6 +172,7 @@ extern "C" { fl_color_print(f_standard_error, data->context.notable, data->context.reset, "--%s", fss_basic_read_long_name); fl_color_print_line(f_standard_error, data->context.error, data->context.reset, "' requires a string."); + fss_basic_read_delete_data(data); return f_status_set_error(f_invalid_parameter); } @@ -177,6 +181,7 @@ extern "C" { fl_color_print(f_standard_error, data->context.notable, data->context.reset, "--%s", fss_basic_read_long_select); fl_color_print_line(f_standard_error, data->context.error, data->context.reset, "' requires a positive number."); + fss_basic_read_delete_data(data); return f_status_set_error(f_invalid_parameter); } @@ -188,6 +193,7 @@ extern "C" { fl_color_print(f_standard_error, data->context.notable, data->context.reset, "--%s", fss_basic_read_long_line); fl_color_print_line(f_standard_error, data->context.error, data->context.reset, "' parameter."); + fss_basic_read_delete_data(data); return f_status_set_error(f_invalid_parameter); } @@ -198,6 +204,7 @@ extern "C" { fl_color_print(f_standard_error, data->context.notable, data->context.reset, "--%s", fss_basic_read_long_select); fl_color_print_line(f_standard_error, data->context.error, data->context.reset, "' parameter."); + fss_basic_read_delete_data(data); return f_status_set_error(f_invalid_parameter); } } @@ -210,6 +217,7 @@ extern "C" { fl_color_print(f_standard_error, data->context.notable, data->context.reset, "--%s", fss_basic_read_long_total); fl_color_print_line(f_standard_error, data->context.error, data->context.reset, "' parameter."); + fss_basic_read_delete_data(data); return f_status_set_error(f_invalid_parameter); } } @@ -228,11 +236,16 @@ extern "C" { // This standard does not support nesting, so any depth greater than 0 can be predicted without processing the file. if (depths.array[0].depth > 0) { + macro_fss_basic_read_depths_delete_simple(depths); + if (data->parameters[fss_basic_read_parameter_total].result == f_console_result_found) { fprintf(f_standard_output, "0%c", f_string_eol); + + fss_basic_read_delete_data(data); return f_none; } + fss_basic_read_delete_data(data); return f_none; } @@ -240,6 +253,9 @@ extern "C" { fl_color_print(f_standard_error, data->context.error, data->context.reset, "ERROR: the '"); fl_color_print(f_standard_error, data->context.notable, data->context.reset, "--%s", fss_basic_read_long_select); fl_color_print_line(f_standard_error, data->context.error, data->context.reset, "' parameter requires a positive number."); + + macro_fss_basic_read_depths_delete_simple(depths); + fss_basic_read_delete_data(data); return f_status_set_error(f_invalid_parameter); } @@ -252,6 +268,7 @@ extern "C" { if (f_status_is_error(status)) { fss_basic_read_print_file_error(data->context, "fl_file_read_fifo", "-", f_status_set_fine(status)); + macro_fss_basic_read_depths_delete_simple(depths); fss_basic_read_delete_data(data); return status; @@ -281,6 +298,7 @@ extern "C" { if (f_status_is_error(status)) { fss_basic_read_print_file_error(data->context, "f_file_open", arguments.argv[data->remaining.array[counter]], f_status_set_fine(status)); + macro_fss_basic_read_depths_delete_simple(depths); fss_basic_read_delete_data(data); return status; @@ -306,6 +324,7 @@ extern "C" { if (f_status_is_error(status)) { fss_basic_read_print_file_error(data->context, "fl_file_read", arguments.argv[data->remaining.array[counter]], f_status_set_fine(status)); + macro_fss_basic_read_depths_delete_simple(depths); fss_basic_read_delete_data(data); return status; diff --git a/level_3/fss_extended_list_read/c/fss_extended_list_read.c b/level_3/fss_extended_list_read/c/fss_extended_list_read.c index b572efd..1f7b005 100644 --- a/level_3/fss_extended_list_read/c/fss_extended_list_read.c +++ b/level_3/fss_extended_list_read/c/fss_extended_list_read.c @@ -145,6 +145,7 @@ extern "C" { fl_color_print(f_standard_error, data->context.notable, data->context.reset, "--%s", fss_extended_list_read_long_at); fl_color_print_line(f_standard_error, data->context.error, data->context.reset, "' requires a positive number."); + fss_extended_list_read_delete_data(data); return f_status_set_error(f_invalid_parameter); } @@ -153,6 +154,7 @@ extern "C" { fl_color_print(f_standard_error, data->context.notable, data->context.reset, "--%s", fss_extended_list_read_long_depth); fl_color_print_line(f_standard_error, data->context.error, data->context.reset, "' requires a positive number."); + fss_extended_list_read_delete_data(data); return f_status_set_error(f_invalid_parameter); } @@ -161,6 +163,7 @@ extern "C" { fl_color_print(f_standard_error, data->context.notable, data->context.reset, "--%s", fss_extended_list_read_long_line); fl_color_print_line(f_standard_error, data->context.error, data->context.reset, "' requires a positive number."); + fss_extended_list_read_delete_data(data); return f_status_set_error(f_invalid_parameter); } @@ -169,6 +172,7 @@ extern "C" { fl_color_print(f_standard_error, data->context.notable, data->context.reset, "--%s", fss_extended_list_read_long_name); fl_color_print_line(f_standard_error, data->context.error, data->context.reset, "' requires a string."); + fss_extended_list_read_delete_data(data); return f_status_set_error(f_invalid_parameter); } @@ -177,6 +181,7 @@ extern "C" { fl_color_print(f_standard_error, data->context.notable, data->context.reset, "--%s", fss_extended_list_read_long_select); fl_color_print_line(f_standard_error, data->context.error, data->context.reset, "' requires a positive number."); + fss_extended_list_read_delete_data(data); return f_status_set_error(f_invalid_parameter); } @@ -188,6 +193,7 @@ extern "C" { fl_color_print(f_standard_error, data->context.notable, data->context.reset, "--%s", fss_extended_list_read_long_line); fl_color_print_line(f_standard_error, data->context.error, data->context.reset, "' parameter."); + fss_extended_list_read_delete_data(data); return f_status_set_error(f_invalid_parameter); } @@ -198,6 +204,7 @@ extern "C" { fl_color_print(f_standard_error, data->context.notable, data->context.reset, "--%s", fss_extended_list_read_long_select); fl_color_print_line(f_standard_error, data->context.error, data->context.reset, "' parameter."); + fss_extended_list_read_delete_data(data); return f_status_set_error(f_invalid_parameter); } } @@ -210,6 +217,7 @@ extern "C" { fl_color_print(f_standard_error, data->context.notable, data->context.reset, "--%s", fss_extended_list_read_long_total); fl_color_print_line(f_standard_error, data->context.error, data->context.reset, "' parameter."); + fss_extended_list_read_delete_data(data); return f_status_set_error(f_invalid_parameter); } } @@ -230,6 +238,9 @@ extern "C" { fl_color_print(f_standard_error, data->context.error, data->context.reset, "ERROR: the '"); fl_color_print(f_standard_error, data->context.notable, data->context.reset, "--%s", fss_extended_list_read_long_select); fl_color_print_line(f_standard_error, data->context.error, data->context.reset, "' parameter requires a positive number."); + + macro_fss_extended_list_read_depths_delete_simple(depths); + fss_extended_list_read_delete_data(data); return f_status_set_error(f_invalid_parameter); } @@ -242,6 +253,7 @@ extern "C" { if (f_status_is_error(status)) { fss_extended_list_read_print_file_error(data->context, "fl_file_read_fifo", "-", f_status_set_fine(status)); + macro_fss_extended_list_read_depths_delete_simple(depths); fss_extended_list_read_delete_data(data); return status; @@ -270,6 +282,7 @@ extern "C" { if (f_status_is_error(status)) { fss_extended_list_read_print_file_error(data->context, "f_file_open", arguments.argv[data->remaining.array[counter]], f_status_set_fine(status)); + macro_fss_extended_list_read_depths_delete_simple(depths); fss_extended_list_read_delete_data(data); return status; @@ -295,6 +308,7 @@ extern "C" { if (f_status_is_error(status)) { fss_extended_list_read_print_file_error(data->context, "fl_file_read", arguments.argv[data->remaining.array[counter]], f_status_set_fine(status)); + macro_fss_extended_list_read_depths_delete_simple(depths); fss_extended_list_read_delete_data(data); return status; diff --git a/level_3/fss_extended_read/c/fss_extended_read.c b/level_3/fss_extended_read/c/fss_extended_read.c index b38c757..b8dadd8 100644 --- a/level_3/fss_extended_read/c/fss_extended_read.c +++ b/level_3/fss_extended_read/c/fss_extended_read.c @@ -145,6 +145,7 @@ extern "C" { fl_color_print(f_standard_error, data->context.notable, data->context.reset, "--%s", fss_extended_read_long_at); fl_color_print_line(f_standard_error, data->context.error, data->context.reset, "' requires a positive number."); + fss_extended_read_delete_data(data); return f_status_set_error(f_invalid_parameter); } @@ -153,6 +154,7 @@ extern "C" { fl_color_print(f_standard_error, data->context.notable, data->context.reset, "--%s", fss_extended_read_long_depth); fl_color_print_line(f_standard_error, data->context.error, data->context.reset, "' requires a positive number."); + fss_extended_read_delete_data(data); return f_status_set_error(f_invalid_parameter); } @@ -161,6 +163,7 @@ extern "C" { fl_color_print(f_standard_error, data->context.notable, data->context.reset, "--%s", fss_extended_read_long_line); fl_color_print_line(f_standard_error, data->context.error, data->context.reset, "' requires a positive number."); + fss_extended_read_delete_data(data); return f_status_set_error(f_invalid_parameter); } @@ -169,6 +172,7 @@ extern "C" { fl_color_print(f_standard_error, data->context.notable, data->context.reset, "--%s", fss_extended_read_long_name); fl_color_print_line(f_standard_error, data->context.error, data->context.reset, "' requires a string."); + fss_extended_read_delete_data(data); return f_status_set_error(f_invalid_parameter); } @@ -177,6 +181,7 @@ extern "C" { fl_color_print(f_standard_error, data->context.notable, data->context.reset, "--%s", fss_extended_read_long_select); fl_color_print_line(f_standard_error, data->context.error, data->context.reset, "' requires a positive number."); + fss_extended_read_delete_data(data); return f_status_set_error(f_invalid_parameter); } @@ -188,6 +193,7 @@ extern "C" { fl_color_print(f_standard_error, data->context.notable, data->context.reset, "--%s", fss_extended_read_long_line); fl_color_print_line(f_standard_error, data->context.error, data->context.reset, "' parameter."); + fss_extended_read_delete_data(data); return f_status_set_error(f_invalid_parameter); } @@ -198,6 +204,7 @@ extern "C" { fl_color_print(f_standard_error, data->context.notable, data->context.reset, "--%s", fss_extended_read_long_select); fl_color_print_line(f_standard_error, data->context.error, data->context.reset, "' parameter."); + fss_extended_read_delete_data(data); return f_status_set_error(f_invalid_parameter); } } @@ -210,6 +217,7 @@ extern "C" { fl_color_print(f_standard_error, data->context.notable, data->context.reset, "--%s", fss_extended_read_long_total); fl_color_print_line(f_standard_error, data->context.error, data->context.reset, "' parameter."); + fss_extended_read_delete_data(data); return f_status_set_error(f_invalid_parameter); } } @@ -228,11 +236,16 @@ extern "C" { // This standard does not support nesting, so any depth greater than 0 can be predicted without processing the file. if (depths.array[0].depth > 0) { + macro_fss_extended_read_depths_delete_simple(depths); + if (data->parameters[fss_extended_read_parameter_total].result == f_console_result_found) { fprintf(f_standard_output, "0%c", f_string_eol); + + fss_extended_read_delete_data(data); return f_none; } + fss_extended_read_delete_data(data); return f_none; } @@ -240,6 +253,9 @@ extern "C" { fl_color_print(f_standard_error, data->context.error, data->context.reset, "ERROR: the '"); fl_color_print(f_standard_error, data->context.notable, data->context.reset, "--%s", fss_extended_read_long_select); fl_color_print_line(f_standard_error, data->context.error, data->context.reset, "' parameter requires a positive number."); + + macro_fss_extended_read_depths_delete_simple(depths); + fss_extended_read_delete_data(data); return f_status_set_error(f_invalid_parameter); } @@ -252,6 +268,7 @@ extern "C" { if (f_status_is_error(status)) { fss_extended_read_print_file_error(data->context, "fl_file_read_fifo", "-", f_status_set_fine(status)); + macro_fss_extended_read_depths_delete_simple(depths); fss_extended_read_delete_data(data); return status; @@ -281,6 +298,7 @@ extern "C" { if (f_status_is_error(status)) { fss_extended_read_print_file_error(data->context, "f_file_open", arguments.argv[data->remaining.array[counter]], f_status_set_fine(status)); + macro_fss_extended_read_depths_delete_simple(depths); fss_extended_read_delete_data(data); return status; @@ -306,6 +324,7 @@ extern "C" { if (f_status_is_error(status)) { fss_extended_read_print_file_error(data->context, "fl_file_read", arguments.argv[data->remaining.array[counter]], f_status_set_fine(status)); + macro_fss_extended_read_depths_delete_simple(depths); fss_extended_read_delete_data(data); return status;