Fix crash in oneway when an invalid dependent variable was specified.
authorJohn Darrington <john@darrington.wattle.id.au>
Sat, 26 Mar 2016 14:22:47 +0000 (15:22 +0100)
committerJohn Darrington <john@darrington.wattle.id.au>
Sat, 26 Mar 2016 14:22:47 +0000 (15:22 +0100)
Found by zzuf

src/language/stats/oneway.c
tests/language/stats/oneway.at

index 544889dfae4e3580c9ff11f3acb50c8801ea58ae..9650dc6e6a7c3f14ed5afeb9446dedf6c52e86c1 100644 (file)
@@ -453,6 +453,8 @@ cmd_oneway (struct lexer *lexer, struct dataset *ds)
   lex_force_match (lexer, T_BY);
 
   oneway.indep_var = parse_variable_const (lexer, dict);
+  if (oneway.indep_var == NULL)
+    goto error;
 
   while (lex_token (lexer) != T_ENDCMD)
     {
index 1d6b4c13a09f29522df42cd0b7b39c107693610e..336b328364a63e872419d2839f894857ef2cb57e 100644 (file)
@@ -995,3 +995,21 @@ ONEWAY /VARIABLES= height weight temperature BY sex
 AT_CHECK([pspp -O format=csv crash4.sps], [0], [ignore])
 
 AT_CLEANUP
+
+
+
+AT_SETUP([ONEWAY Crash on invalid dependent variable])
+AT_DATA([crash5.sps],[dnl
+data list notable list /a * b *.
+begin data.
+3 0
+2 0
+6 2
+end data.
+
+oneway a"by b.
+])
+
+AT_CHECK([pspp -O format=csv crash5.sps], [1], [ignore])
+
+AT_CLEANUP