Fix buffer overflow reported by John Darrington.
[pspp] / src / language / dictionary / variable-display.c
index b7dd8126c25a157a632ce71d363b96c12a32c6d5..fa6eae467f152ac944e691c4a0e29f43776c8ce7 100644 (file)
    02110-1301, USA. */
 
 #include <config.h>
+
 #include <stdio.h>
 #include <stdlib.h>
-#include "alloc.h"
-#include "command.h"
-#include "message.h"
-#include "lexer.h"
-#include "str.h"
-#include "variable.h"
 
-#include "debug-print.h"
+#include <data/procedure.h>
+#include <data/variable.h>
+#include <language/command.h>
+#include <language/lexer/lexer.h>
+#include <language/lexer/variable-parser.h>
+#include <libpspp/alloc.h>
+#include <libpspp/message.h>
+#include <libpspp/str.h>
 
 /* Set variables' alignment
    This is the alignment for GUI display only.
    It affects nothing but GUIs
 */
 int
-cmd_variable_alignment (void)
+cmd_variable_alignment (struct dataset *ds)
 {
   do
     {
@@ -44,9 +46,8 @@ cmd_variable_alignment (void)
       size_t i;
       enum alignment align;
 
-
-      if (!parse_variables (default_dict, &v, &nv, PV_NONE))
-        return CMD_PART_SUCCESS_MAYBE;
+      if (!parse_variables (dataset_dict (ds), &v, &nv, PV_NONE))
+        return CMD_FAILURE;
 
       if ( lex_force_match('(') ) 
        {
@@ -88,7 +89,7 @@ cmd_variable_alignment (void)
    It affects nothing but GUIs
 */
 int
-cmd_variable_width (void)
+cmd_variable_width (struct dataset *ds)
 {
   do
     {
@@ -96,8 +97,8 @@ cmd_variable_width (void)
       size_t nv;
       size_t i;
 
-      if (!parse_variables (default_dict, &v, &nv, PV_NONE))
-        return CMD_PART_SUCCESS_MAYBE;
+      if (!parse_variables (dataset_dict (ds), &v, &nv, PV_NONE))
+        return CMD_FAILURE;
 
       if ( lex_force_match('(') ) 
        {
@@ -122,7 +123,7 @@ cmd_variable_width (void)
 
 /* Set variables' measurement level */
 int
-cmd_variable_level (void)
+cmd_variable_level (struct dataset *ds)
 {
   do
     {
@@ -131,8 +132,8 @@ cmd_variable_level (void)
       enum measure level;
       size_t i;
 
-      if (!parse_variables (default_dict, &v, &nv, PV_NONE))
-        return CMD_PART_SUCCESS_MAYBE;
+      if (!parse_variables (dataset_dict (ds), &v, &nv, PV_NONE))
+        return CMD_FAILURE;
 
       if ( lex_force_match('(') ) 
        {