diff options
author | Tom Lane <tgl@sss.pgh.pa.us> | 2001-01-03 18:43:09 +0000 |
---|---|---|
committer | Tom Lane <tgl@sss.pgh.pa.us> | 2001-01-03 18:43:09 +0000 |
commit | 8fd2e269f7daa8e939cd883949c712be30621bfa (patch) | |
tree | a6f31beda4358723ff68b58f17abf6dbfde3d5c8 | |
parent | a8aa2f95b45a8ab95c489194f89c3bfcd4acf8cd (diff) | |
download | postgresql-8fd2e269f7daa8e939cd883949c712be30621bfa.tar.gz postgresql-8fd2e269f7daa8e939cd883949c712be30621bfa.zip |
MakeRetrieveViewRuleName was scribbling on memory that didn't belong
to it. Bad dog.
-rw-r--r-- | src/backend/commands/view.c | 21 |
1 files changed, 11 insertions, 10 deletions
diff --git a/src/backend/commands/view.c b/src/backend/commands/view.c index 0f726e8e6e0..a421119524b 100644 --- a/src/backend/commands/view.c +++ b/src/backend/commands/view.c @@ -6,7 +6,7 @@ * Portions Copyright (c) 1996-2000, PostgreSQL, Inc * Portions Copyright (c) 1994, Regents of the University of California * - * $Id: view.c,v 1.51 2000/12/21 17:36:15 tgl Exp $ + * $Id: view.c,v 1.52 2001/01/03 18:43:09 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -110,19 +110,20 @@ char * MakeRetrieveViewRuleName(char *viewName) { char *buf; -#ifdef MULTIBYTE - int len; -#endif - - buf = palloc(strlen(viewName) + 5); - snprintf(buf, strlen(viewName) + 5, "_RET%s", viewName); + int buflen, + maxlen; + buflen = strlen(viewName) + 5; + buf = palloc(buflen); + snprintf(buf, buflen, "_RET%s", viewName); + /* clip to less than NAMEDATALEN bytes, if necessary */ #ifdef MULTIBYTE - len = pg_mbcliplen(buf,strlen(buf),NAMEDATALEN-1); - buf[len] = '\0'; + maxlen = pg_mbcliplen(buf, strlen(buf), NAMEDATALEN-1); #else - buf[NAMEDATALEN-1] = '\0'; + maxlen = NAMEDATALEN-1; #endif + if (maxlen < buflen) + buf[maxlen] = '\0'; return buf; } |