Skip to content

Commit da10176

Browse files
committed
Back-patch StrNCpy fix.
1 parent d914334 commit da10176

File tree

3 files changed

+15
-11
lines changed

3 files changed

+15
-11
lines changed

src/backend/utils/adt/like.c

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
* Portions Copyright (c) 1994, Regents of the University of California
1212
*
1313
* IDENTIFICATION
14-
* $Header: /cvsroot/pgsql/src/backend/utils/adt/like.c,v 1.34 2000/04/12 17:15:50 momjian Exp $
14+
* $Header: /cvsroot/pgsql/src/backend/utils/adt/like.c,v 1.34.2.1 2000/07/07 21:29:57 tgl Exp $
1515
*
1616
*-------------------------------------------------------------------------
1717
*/
@@ -50,7 +50,8 @@ fixedlen_like(char *s, struct varlena * p, int charlen)
5050
(void) pg_mb2wchar_with_len((unsigned char *) s, sterm, charlen);
5151
#else
5252
sterm = (char *) palloc(charlen + 1);
53-
StrNCpy(sterm, s, charlen + 1);
53+
memcpy(sterm, s, charlen);
54+
sterm[charlen] = '\0';
5455
#endif
5556

5657
/*

src/backend/utils/adt/regexp.c

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
*
99
*
1010
* IDENTIFICATION
11-
* $Header: /cvsroot/pgsql/src/backend/utils/adt/regexp.c,v 1.30 2000/01/26 05:57:14 momjian Exp $
11+
* $Header: /cvsroot/pgsql/src/backend/utils/adt/regexp.c,v 1.30.2.1 2000/07/07 21:29:57 tgl Exp $
1212
*
1313
* Alistair Crooks added the code for the regex caching
1414
* agc - cached the regular expressions used - there's a good chance
@@ -182,7 +182,8 @@ fixedlen_regexeq(char *s, struct varlena * p, int charlen, int cflags)
182182

183183
/* be sure sterm is null-terminated */
184184
sterm = (char *) palloc(charlen + 1);
185-
StrNCpy(sterm, s, charlen + 1);
185+
memcpy(sterm, s, charlen);
186+
sterm[charlen] = '\0';
186187

187188
result = RE_compile_and_execute(p, sterm, cflags);
188189

src/backend/utils/adt/varchar.c

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
*
99
*
1010
* IDENTIFICATION
11-
* $Header: /cvsroot/pgsql/src/backend/utils/adt/varchar.c,v 1.60 2000/04/12 17:15:52 momjian Exp $
11+
* $Header: /cvsroot/pgsql/src/backend/utils/adt/varchar.c,v 1.60.2.1 2000/07/07 21:29:57 tgl Exp $
1212
*
1313
*-------------------------------------------------------------------------
1414
*/
@@ -117,7 +117,8 @@ bpcharout(char *s)
117117
{
118118
len = VARSIZE(s) - VARHDRSZ;
119119
result = (char *) palloc(len + 1);
120-
StrNCpy(result, VARDATA(s), len + 1); /* these are blank-padded */
120+
memcpy(result, VARDATA(s), len);
121+
result[len] = '\0';
121122
}
122123

123124
#ifdef CYR_RECODE
@@ -249,8 +250,8 @@ bpchar_name(char *s)
249250
return NULL;
250251

251252
len = VARSIZE(s) - VARHDRSZ;
252-
if (len > NAMEDATALEN)
253-
len = NAMEDATALEN;
253+
if (len >= NAMEDATALEN)
254+
len = NAMEDATALEN-1;
254255

255256
while (len > 0)
256257
{
@@ -265,7 +266,7 @@ bpchar_name(char *s)
265266
#endif
266267

267268
result = (NameData *) palloc(NAMEDATALEN);
268-
StrNCpy(NameStr(*result), VARDATA(s), NAMEDATALEN);
269+
memcpy(NameStr(*result), VARDATA(s), len);
269270

270271
/* now null pad to full length... */
271272
while (len < NAMEDATALEN)
@@ -297,7 +298,7 @@ name_bpchar(NameData *s)
297298
#endif
298299

299300
result = (char *) palloc(VARHDRSZ + len);
300-
strncpy(VARDATA(result), NameStr(*s), len);
301+
memcpy(VARDATA(result), NameStr(*s), len);
301302
VARSIZE(result) = len + VARHDRSZ;
302303

303304
return result;
@@ -354,7 +355,8 @@ varcharout(char *s)
354355
{
355356
len = VARSIZE(s) - VARHDRSZ;
356357
result = (char *) palloc(len + 1);
357-
StrNCpy(result, VARDATA(s), len + 1);
358+
memcpy(result, VARDATA(s), len);
359+
result[len] = '\0';
358360
}
359361

360362
#ifdef CYR_RECODE

0 commit comments

Comments
 (0)