Fixed crash when processing malformed NPAR TESTS BINOMIAL command.
authorJohn Darrington <john@darrington.wattle.id.au>
Wed, 30 Mar 2016 06:17:48 +0000 (08:17 +0200)
committerJohn Darrington <john@darrington.wattle.id.au>
Wed, 30 Mar 2016 16:01:17 +0000 (18:01 +0200)
Found by zzuf.

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

index 7c2b37af1524d4324d16c1a1f8300cb9c39bdddd..b8cbb1bcf20bbec2e885c341a1a01738d7aececf 100644 (file)
@@ -498,7 +498,6 @@ parse_npar_tests (struct lexer *lexer, struct dataset *ds, struct cmd_npar_tests
         if (!lex_match (lexer, T_SLASH))
           break;
       }
-
     if (lex_token (lexer) != T_ENDCMD)
       {
         lex_error (lexer, _("expecting end of command"));
@@ -943,7 +942,10 @@ npar_binomial (struct lexer *lexer, struct dataset *ds,
   else
     equals = true;
 
-  if (equals || lex_match (lexer, T_EQUALS) )
+  if (!equals)
+    if (!lex_force_match (lexer, T_EQUALS))
+      return 0;
+
     {
       if (parse_variables_const_pool (lexer, specs->pool, dataset_dict (ds),
                                      &tp->vars, &tp->n_vars,
@@ -970,8 +972,9 @@ npar_binomial (struct lexer *lexer, struct dataset *ds,
            }
        }
       else
-       return 2;
-
+       {
+         return 2;
+       }
     }
 
   specs->n_tests++;
index a7e1331e686e2033265af3a4c1613f1ee498ac14..ed829cdc524a68f37ceb742f9e1a085ac65e1f2c 100644 (file)
@@ -1,6 +1,6 @@
 AT_BANNER([NPAR TESTS])
 
-AT_SETUP([NPAR TESTS BINOMIAL, P < 0.5; N1/N2 < 1])
+AT_SETUP([NPAR TESTS BINOMIAL P < 0.5; N1/N2 < 1])
 AT_DATA([npar.sps], [dnl
 SET FORMAT F8.3.
 
@@ -25,7 +25,7 @@ x,Group1,1.000,6.000,.286,.300,.551
 ])
 AT_CLEANUP
 
-AT_SETUP([NPAR TESTS BINOMIAL, P < 0.5; N1/N2 > 1])
+AT_SETUP([NPAR TESTS BINOMIAL P < 0.5; N1/N2 > 1])
 AT_DATA([npar.sps], [dnl
 SET FORMAT F8.3.
 
@@ -50,7 +50,7 @@ x,Group1,1,7,.538,.400,.229
 ])
 AT_CLEANUP
 
-AT_SETUP([NPAR TESTS BINOMIAL, P < 0.5; N1/N2 = 1])
+AT_SETUP([NPAR TESTS BINOMIAL P < 0.5; N1/N2 = 1])
 AT_DATA([npar.sps], [dnl
 SET FORMAT F8.3.
 
@@ -75,7 +75,7 @@ x,Group1,1,8,.500,.400,.284
 ])
 AT_CLEANUP
 
-AT_SETUP([NPAR TESTS BINOMIAL, P > 0.5; N1/N2 < 1])
+AT_SETUP([NPAR TESTS BINOMIAL P > 0.5; N1/N2 < 1])
 AT_DATA([npar.sps], [dnl
 SET FORMAT F8.3.
 
@@ -100,7 +100,7 @@ x,Group1,1,11,.478,.600,.164
 ])
 AT_CLEANUP
 
-AT_SETUP([NPAR TESTS BINOMIAL, P > 0.5; N1/N2 > 1])
+AT_SETUP([NPAR TESTS BINOMIAL P > 0.5; N1/N2 > 1])
 AT_DATA([npar.sps], [dnl
 SET FORMAT F8.3.
 
@@ -124,7 +124,7 @@ x,Group1,1,11,.550,.600,.404
 ])
 AT_CLEANUP
 
-AT_SETUP([NPAR TESTS BINOMIAL, P > 0.5; N1/N2 = 1])
+AT_SETUP([NPAR TESTS BINOMIAL P > 0.5; N1/N2 = 1])
 AT_DATA([npar.sps], [dnl
 SET FORMAT F8.3.
 
@@ -148,7 +148,7 @@ x,Group1,1,11,.500,.600,.228
 ])
 AT_CLEANUP
 
-AT_SETUP([NPAR TESTS BINOMIAL, P = 0.5; N1/N2 < 1])
+AT_SETUP([NPAR TESTS BINOMIAL P = 0.5; N1/N2 < 1])
 AT_DATA([npar.sps], [dnl
 SET FORMAT F8.3.
 
@@ -173,7 +173,7 @@ x,Group1,1,8,.348,.500,.210
 ])
 AT_CLEANUP
 
-AT_SETUP([NPAR TESTS BINOMIAL, P = 0.5; N1/N2 > 1])
+AT_SETUP([NPAR TESTS BINOMIAL P = 0.5; N1/N2 > 1])
 AT_DATA([npar.sps], [dnl
 SET FORMAT F8.3.
 
@@ -197,7 +197,7 @@ x,Group1,1,12,.667,.500,.238
 ])
 AT_CLEANUP
 
-AT_SETUP([NPAR TESTS BINOMIAL, P = 0.5; N1/N2 = 1])
+AT_SETUP([NPAR TESTS BINOMIAL P = 0.5; N1/N2 = 1])
 AT_DATA([npar.sps], [dnl
 SET FORMAT F8.3.
 
@@ -222,7 +222,7 @@ x,Group1,1,10,.500,.500,1.000
 ])
 AT_CLEANUP
 
-AT_SETUP([NPAR TESTS BINOMIAL, P = 0.5; N1/N2 = 1 Cutpoint])
+AT_SETUP([NPAR TESTS BINOMIAL P = 0.5; N1/N2 = 1 Cutpoint])
 AT_DATA([npar.sps], [dnl
 SET FORMAT F8.3.
 
@@ -248,7 +248,7 @@ x,Group1,<= 10,10.000,.385,.500,.327
 ])
 AT_CLEANUP
 
-AT_SETUP([NPAR TESTS BINOMIAL, P = 0.5; N1/N2 = 1 Named values])
+AT_SETUP([NPAR TESTS BINOMIAL P = 0.5; N1/N2 = 1 Named values])
 AT_DATA([npar.sps], [dnl
 SET FORMAT F8.3.