From: John Darrington Date: Mon, 30 Dec 2013 09:13:16 +0000 (+0100) Subject: QUICK CLUSTER: Fix crash on negative parameters X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=4ad3c9bd363ecd7859a9fecd53fa1f3bf7141220;p=pspp QUICK CLUSTER: Fix crash on negative parameters --- diff --git a/src/language/stats/quick-cluster.c b/src/language/stats/quick-cluster.c index bc66cce795..946181b01a 100644 --- a/src/language/stats/quick-cluster.c +++ b/src/language/stats/quick-cluster.c @@ -548,6 +548,11 @@ cmd_quick_cluster (struct lexer *lexer, struct dataset *ds) { lex_force_int (lexer); qc.ngroups = lex_integer (lexer); + if (qc.ngroups <= 0) + { + lex_error (lexer, _("The number of clusters must be positive")); + goto error; + } lex_get (lexer); lex_force_match (lexer, T_RPAREN); } @@ -558,6 +563,11 @@ cmd_quick_cluster (struct lexer *lexer, struct dataset *ds) { lex_force_int (lexer); qc.maxiter = lex_integer (lexer); + if (qc.maxiter <= 0) + { + lex_error (lexer, _("The number of iterations must be positive")); + goto error; + } lex_get (lexer); lex_force_match (lexer, T_RPAREN); } diff --git a/tests/language/stats/quick-cluster.at b/tests/language/stats/quick-cluster.at index 9e3e87c899..495635b0b8 100644 --- a/tests/language/stats/quick-cluster.at +++ b/tests/language/stats/quick-cluster.at @@ -210,3 +210,22 @@ AT_CHECK([diff pspp-s.csv pspp-pw.csv], [0]) AT_CLEANUP + + + +AT_SETUP([QUICK CLUSTER crash on bad cluster quantity]) +AT_DATA([badn.sps], [dnl +data list notable list /x * y *. +begin data. +1 2 +1 2.2 +end data. + +QUICK CLUSTER x y + /CRITERIA = CLUSTER(0) + . +]) + +AT_CHECK([pspp -O format=csv badn.sps], [1], [ignore]) + +AT_CLEANUP \ No newline at end of file