diff options
author | Tom Lane <tgl@sss.pgh.pa.us> | 2003-09-03 15:00:07 +0000 |
---|---|---|
committer | Tom Lane <tgl@sss.pgh.pa.us> | 2003-09-03 15:00:07 +0000 |
commit | e6d6713ceb38c168d4a3b69dfb823529bb0144ef (patch) | |
tree | ef50dd87b7a0aa631f956db797379ceae3d50e6e /src | |
parent | ba91f3b1de438a1ecb9c1d0a2509795b24b244ae (diff) | |
download | postgresql-e6d6713ceb38c168d4a3b69dfb823529bb0144ef.tar.gz postgresql-e6d6713ceb38c168d4a3b69dfb823529bb0144ef.zip |
Repair problems with to_char() overrunning its input string.
From Karel Zak.
Diffstat (limited to 'src')
-rw-r--r-- | src/backend/utils/adt/formatting.c | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/src/backend/utils/adt/formatting.c b/src/backend/utils/adt/formatting.c index 9c2336e8e2c..fb597a10547 100644 --- a/src/backend/utils/adt/formatting.c +++ b/src/backend/utils/adt/formatting.c @@ -1,7 +1,7 @@ /* ----------------------------------------------------------------------- * formatting.c * - * $Header: /cvsroot/pgsql/src/backend/utils/adt/formatting.c,v 1.56 2002/09/20 03:57:09 momjian Exp $ + * $Header: /cvsroot/pgsql/src/backend/utils/adt/formatting.c,v 1.56.2.1 2003/09/03 15:00:07 tgl Exp $ * * * Portions Copyright (c) 1999-2002, PostgreSQL Global Development Group @@ -1264,6 +1264,16 @@ DCH_processor(FormatNode *node, char *inout, int flag, void *data) for (n = node, s = inout; n->type != NODE_TYPE_END; n++) { + if (flag == FROM_CHAR && *s=='\0') + /* + * The input string is shorter than format picture, + * so it's good time to break this loop... + * + * Note: this isn't relevant for TO_CHAR mode, beacuse + * it use 'inout' allocated by format picture length. + */ + break; + if (n->type == NODE_TYPE_ACTION) { int len; |