From: Tom Lane Date: Wed, 3 Sep 2003 15:00:07 +0000 (+0000) Subject: Repair problems with to_char() overrunning its input string. X-Git-Tag: REL7_3_5~19 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=e6d6713ceb38c168d4a3b69dfb823529bb0144ef;p=thirdparty%2Fpostgresql.git Repair problems with to_char() overrunning its input string. From Karel Zak. --- 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;