Fix crash in correlations with empty dataset.
authorJohn Darrington <john@darrington.wattle.id.au>
Thu, 24 Mar 2016 19:07:11 +0000 (20:07 +0100)
committerJohn Darrington <john@darrington.wattle.id.au>
Thu, 24 Mar 2016 21:24:18 +0000 (22:24 +0100)
Found by zzuf.

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

index 133eece4f240de477fe500041c3934d9627244f2..ba56c135c4930080c7c7837ddf2eeef3e41cef6b 100644 (file)
@@ -511,7 +511,8 @@ cmd_correlation (struct lexer *lexer, struct dataset *ds)
   return ok ? CMD_SUCCESS : CMD_CASCADING_FAILURE;
 
  error:
-  free (corr->vars);
+  if (corr)
+    free (corr->vars);
   free (corr);
   return CMD_FAILURE;
 }
index 24fb63c6a69c975215a3c721323cb5bf2da51301..b2fd22f823c3b19ed7991f46b21df81ef8fda277 100644 (file)
@@ -348,3 +348,16 @@ var5,Pearson Correlation,-.0519,-.0407
 ])
 
 AT_CLEANUP
+
+
+dnl Crash found by zzuf
+AT_SETUP([CORRELATIONS -- empty dataset])
+
+AT_DATA([correlations.sps], [dnl
+data list list /a b c q g *.
+CORRELATIONS 'VARIABLES = a b.]
+)
+
+AT_CHECK([pspp -o pspp.csv correlations.sps], [1], [ignore])
+
+AT_CLEANUP