From ab1b102eacc82ee2b51dd9b998317e77a8f74b9f Mon Sep 17 00:00:00 2001 From: Jason Stover Date: Sun, 1 Jan 2006 16:47:06 +0000 Subject: [PATCH] Substituted strncmp for strcmp to limit string size --- src/regression.q | 3 +-- src/regression_export.h | 7 ++++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/regression.q b/src/regression.q index 1fe9cdec..27c6ba3f 100644 --- a/src/regression.q +++ b/src/regression.q @@ -558,7 +558,7 @@ reg_print_getvar (FILE *fp, pspp_linreg_cache *c) fprintf (fp, "int i;\n\tint n_vars = %d;\n\t",c->n_indeps); reg_print_depvars (fp, c); fprintf (fp, "for (i = 0; i < n_vars; i++)\n\t{\n\t\t"); - fprintf (fp, "if (strcmp (v_name, model_depvars[i]) == 0)\n\t\t{\n\t\t\t"); + fprintf (fp, "if (strncmp (v_name, model_depvars[i], PSPP_REG_MAXLEN) == 0)\n\t\t{\n\t\t\t"); fprintf (fp, "return i;\n\t\t}\n\t}\n}\n"); } static void @@ -579,7 +579,6 @@ subcommand_export (int export, pspp_linreg_cache *c) assert (fp != NULL); fp = fopen (handle_get_filename (model_file), "w"); fprintf (fp, "%s", reg_preamble); - fprintf (fp, "#include \n#include \n\n"); reg_print_getvar (fp, c); reg_print_categorical_encoding (fp, c); fprintf (fp, "%s", reg_export_t_quantiles_1); diff --git a/src/regression_export.h b/src/regression_export.h index a9583d7b..083064d1 100644 --- a/src/regression_export.h +++ b/src/regression_export.h @@ -39,7 +39,8 @@ const char reg_header[] = "#ifndef REG_EXPORT_COMMENTS_H\n#define REG_EXPORT_COM const char reg_preamble[] = "/*\n This program contains functions which return estimates\n" " and confidence intervals for a linear model. The EXPORT subcommand\n" -" of the REGRESSION procedure of GNU PSPP generated this program.\n*/\n\n"; +" of the REGRESSION procedure of GNU PSPP generated this program.\n*/\n\n" +"#include \n#include \n#define PSPP_REG_MAXLEN 1024\n\n"; const char reg_mean_cmt[] = "/*\n Estimate the mean of Y, the dependent variable for\n" " the linear model of the form \n\n" @@ -138,10 +139,10 @@ const char reg_export_categorical_encode_1[] = "struct pspp_reg_categorical_vari "int i;\n\t"; const char reg_export_categorical_encode_2[] = "int v_index = 0;\n\t" -"while (v_index < n_vars && strcmp (var, varlist[i]->name) != 0)\n\t{\n\t\t" +"while (v_index < n_vars && strncmp (var, varlist[i]->name, PSPP_REG_MAXLEN) != 0)\n\t{\n\t\t" "v_index++;\n\t}\n\tresult = (double *) malloc (varlist[v_index]->n_vals * sizeof (*result));\n\t" "for (i = 0; i < varlist[v_index]->n_vals; i++)\n\t{\n\t\t" -"if (strcmp ( (varlist[v_index]->values)[i], value) == 0)\n\t\t{\n\t\t\t" +"if (strncmp ( (varlist[v_index]->values)[i], value, PSPP_REG_MAXLEN) == 0)\n\t\t{\n\t\t\t" "result[i] = 1.0;\n\t\t}\n\t\telse result[i] = 0.0;\n\t}\n\n\t" "return result;\n}\n\n"; #endif -- 2.30.2