aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMichael Meskes <meskes@postgresql.org>2018-01-13 14:56:49 +0100
committerMichael Meskes <meskes@postgresql.org>2018-01-13 14:57:49 +0100
commit649aeb123f73e69cf78c52b534c15c51a229d63d (patch)
tree9503872a36dada561a1bd6a341a5cab9d2ba04d9 /src
parent255f14183ac7bc6a83a5bb00d67d5ac7e8b645f1 (diff)
downloadpostgresql-649aeb123f73e69cf78c52b534c15c51a229d63d.tar.gz
postgresql-649aeb123f73e69cf78c52b534c15c51a229d63d.zip
Cope with indicator arrays that do not have the correct length.
Patch by: "Rader, David" <davidr@openscg.com>
Diffstat (limited to 'src')
-rw-r--r--src/interfaces/ecpg/preproc/type.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/src/interfaces/ecpg/preproc/type.c b/src/interfaces/ecpg/preproc/type.c
index 4abbf93d191..fa1a05c3025 100644
--- a/src/interfaces/ecpg/preproc/type.c
+++ b/src/interfaces/ecpg/preproc/type.c
@@ -609,7 +609,17 @@ ECPGdump_a_struct(FILE *o, const char *name, const char *ind_name, char *arrsize
prefix, ind_prefix, arrsize, type->struct_sizeof,
(ind_p != NULL) ? ind_type->struct_sizeof : NULL);
if (ind_p != NULL && ind_p != &struct_no_indicator)
+ {
ind_p = ind_p->next;
+ if (ind_p == NULL && p->next != NULL) {
+ mmerror(PARSE_ERROR, ET_WARNING, "indicator struct \"%s\" has too few members", ind_name);
+ ind_p = &struct_no_indicator;
+ }
+ }
+ }
+
+ if (ind_type != NULL && ind_p != NULL && ind_p != &struct_no_indicator) {
+ mmerror(PARSE_ERROR, ET_WARNING, "indicator struct \"%s\" has too many members", ind_name);
}
free(pbuf);