From f1b7ff3c197a2ec2bbdc78fc1e5b9b0306f03768 Mon Sep 17 00:00:00 2001 From: John Darrington Date: Sat, 26 Mar 2016 17:36:59 +0100 Subject: [PATCH] Fix bug in GRAPH when a bad dependent variable was specified. Found by zzuf. --- src/language/stats/graph.c | 2 ++ tests/language/stats/graph.at | 22 ++++++++++++++++++++++ 2 files changed, 24 insertions(+) diff --git a/src/language/stats/graph.c b/src/language/stats/graph.c index 65c03bbf79..da74afdef4 100644 --- a/src/language/stats/graph.c +++ b/src/language/stats/graph.c @@ -245,6 +245,8 @@ parse_function (struct lexer *lexer, struct graph *graph) for (v = 0; v < ag_func[i].arity; ++v) { graph->dep_vars[v] = parse_variable (lexer, graph->dict); + if (! graph->dep_vars[v]) + goto error; } if (!lex_force_match (lexer, T_RPAREN)) diff --git a/tests/language/stats/graph.at b/tests/language/stats/graph.at index b08f9f26d9..f9daa69cbb 100644 --- a/tests/language/stats/graph.at +++ b/tests/language/stats/graph.at @@ -307,4 +307,26 @@ GRAPH /BAR = MINIMUM(y) BY z BY y. AT_CHECK([pspp -o pspp.pdf barchart.sps], [0], [ignore]) dnl Ignore output -- this is just a no-crash check. +AT_CLEANUP + + + + + +AT_SETUP([GRAPH buggy syntax]) + +AT_DATA([barchart.sps], [dnl +data list notable list /x y z*. +begin data +1 1 3 +2 1 4 +10 2 4 +end data. + +GRAPH /BAR = MINIMUM({) BY z BY y. +]) + +AT_CHECK([pspp -o pspp.pdf barchart.sps], [1], [ignore]) +dnl Ignore output -- this is just a no-crash check. + AT_CLEANUP \ No newline at end of file -- 2.30.2