diff options
author | Michael Meskes <meskes@postgresql.org> | 2004-03-04 07:38:50 +0000 |
---|---|---|
committer | Michael Meskes <meskes@postgresql.org> | 2004-03-04 07:38:50 +0000 |
commit | ea41a8cc5f0b6af81a6f447e066339ed877a455c (patch) | |
tree | b4344cc7a410b3a378371464907a0ba824672c74 /src/interfaces/ecpg/preproc/variable.c | |
parent | 926fd43d77b035303826ca1d185f7a2535e29954 (diff) | |
download | postgresql-ea41a8cc5f0b6af81a6f447e066339ed877a455c.tar.gz postgresql-ea41a8cc5f0b6af81a6f447e066339ed877a455c.zip |
- Fixed segfault due to missing check for variable declaration.
- Added check for multidimensional array usage.
Diffstat (limited to 'src/interfaces/ecpg/preproc/variable.c')
-rw-r--r-- | src/interfaces/ecpg/preproc/variable.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/src/interfaces/ecpg/preproc/variable.c b/src/interfaces/ecpg/preproc/variable.c index e12b9434998..f1a875f0ccc 100644 --- a/src/interfaces/ecpg/preproc/variable.c +++ b/src/interfaces/ecpg/preproc/variable.c @@ -218,7 +218,7 @@ find_variable(char *name) { /* * We don't care about what's inside the array braces so just - * eat up the character + * eat up the characters */ for (count = 1, end = next + 1; count; end++) { @@ -242,6 +242,11 @@ find_variable(char *name) *next = '\0'; p = find_simple(name); + if (p == NULL) + { + snprintf(errortext, sizeof(errortext), "The variable %s is not declared", name); + mmerror(PARSE_ERROR, ET_FATAL, errortext); + } *next = c; switch (p->type->u.element->type) { |