aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom Lane <tgl@sss.pgh.pa.us>2001-01-03 18:43:09 +0000
committerTom Lane <tgl@sss.pgh.pa.us>2001-01-03 18:43:09 +0000
commit8fd2e269f7daa8e939cd883949c712be30621bfa (patch)
treea6f31beda4358723ff68b58f17abf6dbfde3d5c8
parenta8aa2f95b45a8ab95c489194f89c3bfcd4acf8cd (diff)
downloadpostgresql-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.c21
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;
}