Fix crash when cleaning up after parsing bad MODIFY VARIABLES.
authorJohn Darrington <john@darrington.wattle.id.au>
Sat, 20 Jun 2020 05:17:06 +0000 (07:17 +0200)
committerJohn Darrington <john@darrington.wattle.id.au>
Sat, 20 Jun 2020 05:17:03 +0000 (07:17 +0200)
Reported by: Andrea Fioraldi

Fixes Bug: #58590

src/language/dictionary/modify-variables.c
tests/language/dictionary/modify-variables.at

index 58853abd36c64850ef25045a7234dffad5a501cc..ab73bbb8990d7ded61c0701988b07c47f24b3873 100644 (file)
@@ -360,8 +360,9 @@ cmd_modify_vars (struct lexer *lexer, struct dataset *ds)
 done:
   free (vm.reorder_vars);
   free (vm.rename_vars);
-  for (size_t i = 0; i < vm.n_rename; i++)
-    free (vm.new_names[i]);
+  if (vm.new_names)
+    for (size_t i = 0; i < vm.n_rename; i++)
+      free (vm.new_names[i]);
   free (vm.new_names);
   free (vm.drop_vars);
   return ret_code;
index 6fcd6b840a82d5bd1e7eb23786a351cff9db1090..f101ba72116e4ad5f4e58c88c54fff88bebf261d 100644 (file)
@@ -1,5 +1,5 @@
 dnl PSPP - a program for statistical analysis.
-dnl Copyright (C) 2017 Free Software Foundation, Inc.
+dnl Copyright (C) 2017, 2020 Free Software Foundation, Inc.
 dnl
 dnl This program is free software: you can redistribute it and/or modify
 dnl it under the terms of the GNU General Public License as published by
@@ -237,3 +237,17 @@ modify-variables.sps:16: error: MODIFY VARS: MODIFY VARS may not be used to dele
 modify-variables.sps:17: error: Stopping syntax file processing here to avoid a cascade of dependent command failures.
 ])
 AT_CLEANUP
+
+AT_SETUP([MODIFY VARS crash])
+AT_DATA([modify-variables.sps], [dnl
+DATA LIST notable LIST /a b c (F2.0).
+BEGIN DATA.
+1 2 3
+END DATA.
+
+MODIFY VARS /RENAME (a 4 c = one two three).
+])
+
+AT_CHECK([pspp -O format=csv modify-variables.sps], [1], [ignore])
+
+AT_CLEANUP