X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Flanguage%2Fstats%2Fregression.c;h=6fa114338eb344daca89cd15bf0a1041491548ef;hb=6b6718a372daeaa66d69e126f9ee4a9bf46bf059;hp=9ca056943eb52d4631394cdd90937dcb136170df;hpb=340b89fe47ce7e7e5acf345821fb2ec36b3ea663;p=pspp diff --git a/src/language/stats/regression.c b/src/language/stats/regression.c index 9ca056943e..6fa114338e 100644 --- a/src/language/stats/regression.c +++ b/src/language/stats/regression.c @@ -706,8 +706,13 @@ run_regression_get_models (const struct regression *cmd, size_t n_all_vars = get_n_all_vars (cmd); const struct variable **all_vars = xnmalloc (n_all_vars, sizeof (*all_vars)); - double *means = xnmalloc (n_all_vars, sizeof (*means)); - + /* In the (rather pointless) case where the dependent variable is + the independent variable, n_all_vars == 1. + However this would result in a buffer overflow so we must + over-allocate the space required in this malloc call. + See bug #58599 */ + double *means = xnmalloc (n_all_vars <= 1 ? 2 : n_all_vars, + sizeof (*means)); fill_all_vars (all_vars, cmd); cov = covariance_1pass_create (n_all_vars, all_vars, dict_get_weight (dataset_dict (cmd->ds)), @@ -856,7 +861,8 @@ reg_stats_r (const struct linreg * c, const struct variable *var) { struct pivot_table *table = pivot_table_create__ ( pivot_value_new_text_format (N_("Model Summary (%s)"), - var_to_string (var))); + var_to_string (var)), + "Model Summary"); pivot_dimension_create (table, PIVOT_AXIS_COLUMN, N_("Statistics"), N_("R"), N_("R Square"), N_("Adjusted R Square"), @@ -886,8 +892,8 @@ reg_stats_coeff (const struct regression *cmd, const struct linreg *c, const struct variable *var) { struct pivot_table *table = pivot_table_create__ ( - pivot_value_new_text_format (N_("Coefficients (%s)"), - var_to_string (var))); + pivot_value_new_text_format (N_("Coefficients (%s)"), var_to_string (var)), + "Coefficients"); struct pivot_dimension *statistics = pivot_dimension_create ( table, PIVOT_AXIS_COLUMN, N_("Statistics")); @@ -1011,7 +1017,8 @@ static void reg_stats_anova (const struct linreg * c, const struct variable *var) { struct pivot_table *table = pivot_table_create__ ( - pivot_value_new_text_format (N_("ANOVA (%s)"), var_to_string (var))); + pivot_value_new_text_format (N_("ANOVA (%s)"), var_to_string (var)), + "ANOVA"); pivot_dimension_create (table, PIVOT_AXIS_COLUMN, N_("Statistics"), N_("Sum of Squares"), PIVOT_RC_OTHER, @@ -1066,7 +1073,8 @@ reg_stats_bcov (const struct linreg * c, const struct variable *var) { struct pivot_table *table = pivot_table_create__ ( pivot_value_new_text_format (N_("Coefficient Correlations (%s)"), - var_to_string (var))); + var_to_string (var)), + "Coefficient Correlations"); for (size_t i = 0; i < 2; i++) {