aboutsummaryrefslogtreecommitdiff
path: root/src/tutorial
diff options
context:
space:
mode:
authorTom Lane <tgl@sss.pgh.pa.us>2006-09-27 16:19:42 +0000
committerTom Lane <tgl@sss.pgh.pa.us>2006-09-27 16:19:42 +0000
commit1d45168f4b4d21c33d7aaa23b8203e2a4a43545e (patch)
treee4c8097398ae5c987369490f4b354551191607d3 /src/tutorial
parent9ba40653129f0c538ac8d4f0488512a10819567f (diff)
downloadpostgresql-1d45168f4b4d21c33d7aaa23b8203e2a4a43545e.tar.gz
postgresql-1d45168f4b4d21c33d7aaa23b8203e2a4a43545e.zip
Fix some misuses of strncat().
Diffstat (limited to 'src/tutorial')
-rw-r--r--src/tutorial/funcs.c11
-rw-r--r--src/tutorial/funcs_new.c11
2 files changed, 12 insertions, 10 deletions
diff --git a/src/tutorial/funcs.c b/src/tutorial/funcs.c
index 2ac798f81b6..18f8467dddb 100644
--- a/src/tutorial/funcs.c
+++ b/src/tutorial/funcs.c
@@ -1,4 +1,4 @@
-/* $PostgreSQL: pgsql/src/tutorial/funcs.c,v 1.15 2006/05/31 20:58:09 tgl Exp $ */
+/* $PostgreSQL: pgsql/src/tutorial/funcs.c,v 1.16 2006/09/27 16:19:42 tgl Exp $ */
/******************************************************************************
These are user-defined functions that can be bound to a Postgres backend
@@ -85,13 +85,14 @@ copytext(text *t)
text *
concat_text(text *arg1, text *arg2)
{
- int32 new_text_size = VARSIZE(arg1) + VARSIZE(arg2) - VARHDRSZ;
+ int32 arg1_size = VARSIZE(arg1) - VARHDRSZ;
+ int32 arg2_size = VARSIZE(arg2) - VARHDRSZ;
+ int32 new_text_size = arg1_size + arg2_size + VARHDRSZ;
text *new_text = (text *) palloc(new_text_size);
- memset((void *) new_text, 0, new_text_size);
VARATT_SIZEP(new_text) = new_text_size;
- strncpy(VARDATA(new_text), VARDATA(arg1), VARSIZE(arg1) - VARHDRSZ);
- strncat(VARDATA(new_text), VARDATA(arg2), VARSIZE(arg2) - VARHDRSZ);
+ memcpy(VARDATA(new_text), VARDATA(arg1), arg1_size);
+ memcpy(VARDATA(new_text) + arg1_size, VARDATA(arg2), arg2_size);
return new_text;
}
diff --git a/src/tutorial/funcs_new.c b/src/tutorial/funcs_new.c
index b42f495d019..88fff266c4e 100644
--- a/src/tutorial/funcs_new.c
+++ b/src/tutorial/funcs_new.c
@@ -1,4 +1,4 @@
-/* $PostgreSQL: pgsql/src/tutorial/funcs_new.c,v 1.11 2006/07/14 14:52:27 momjian Exp $ */
+/* $PostgreSQL: pgsql/src/tutorial/funcs_new.c,v 1.12 2006/09/27 16:19:42 tgl Exp $ */
/******************************************************************************
These are user-defined functions that can be bound to a Postgres backend
@@ -101,13 +101,14 @@ concat_text(PG_FUNCTION_ARGS)
{
text *arg1 = PG_GETARG_TEXT_P(0);
text *arg2 = PG_GETARG_TEXT_P(1);
- int32 new_text_size = VARSIZE(arg1) + VARSIZE(arg2) - VARHDRSZ;
+ int32 arg1_size = VARSIZE(arg1) - VARHDRSZ;
+ int32 arg2_size = VARSIZE(arg2) - VARHDRSZ;
+ int32 new_text_size = arg1_size + arg2_size + VARHDRSZ;
text *new_text = (text *) palloc(new_text_size);
- memset((void *) new_text, 0, new_text_size);
VARATT_SIZEP(new_text) = new_text_size;
- strncpy(VARDATA(new_text), VARDATA(arg1), VARSIZE(arg1) - VARHDRSZ);
- strncat(VARDATA(new_text), VARDATA(arg2), VARSIZE(arg2) - VARHDRSZ);
+ memcpy(VARDATA(new_text), VARDATA(arg1), arg1_size);
+ memcpy(VARDATA(new_text) + arg1_size, VARDATA(arg2), arg2_size);
PG_RETURN_TEXT_P(new_text);
}