From: John Darrington Date: Thu, 31 Mar 2016 12:44:57 +0000 (+0200) Subject: Fix crash when ONEWAY/CONTRASTS contained an empty list. X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=db7019dcf6198f62053ac010f3b0ca12a6d93106;p=pspp Fix crash when ONEWAY/CONTRASTS contained an empty list. Found by zzuf. --- diff --git a/src/language/stats/oneway.c b/src/language/stats/oneway.c index 9650dc6e6a..8d7867234b 100644 --- a/src/language/stats/oneway.c +++ b/src/language/stats/oneway.c @@ -545,6 +545,9 @@ cmd_oneway (struct lexer *lexer, struct dataset *ds) goto error; } } + + if ( ll_count (coefficient_list) <= 0) + goto error; ll_push_tail (&oneway.contrast_list, &cl->ll); } diff --git a/tests/language/stats/oneway.at b/tests/language/stats/oneway.at index 336b328364..a53dfcdd4d 100644 --- a/tests/language/stats/oneway.at +++ b/tests/language/stats/oneway.at @@ -1008,8 +1008,30 @@ begin data. end data. oneway a"by b. + ]) AT_CHECK([pspp -O format=csv crash5.sps], [1], [ignore]) AT_CLEANUP + + + + +AT_SETUP([ONEWAY Crash on unterminated string]) + +AT_DATA([crash6.sps], [dnl +DATA LIST NOTABLE LIST /height * weight * temperature * sex *. +BEGIN DATA. +1801 . . 0 +1606 . 0 . 1 +END DATA. + +ONEWAY /VARIABLES= height weight temperature BY sex + /CONTRAST =" 2 -2 1 + . +]) + +AT_CHECK([pspp -O format=csv crash6.sps], [1], [ignore]) + +AT_CLEANUP