From: Tom Lane Date: Fri, 7 Jul 2000 21:29:57 +0000 (+0000) Subject: Back-patch StrNCpy fix. X-Git-Tag: REL7_0_3~42 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=da1017659af283d1629011afc7b87f8a777c923d;p=thirdparty%2Fpostgresql.git Back-patch StrNCpy fix. --- diff --git a/src/backend/utils/adt/like.c b/src/backend/utils/adt/like.c index 3ec148bacb4..03bcc984d59 100644 --- a/src/backend/utils/adt/like.c +++ b/src/backend/utils/adt/like.c @@ -11,7 +11,7 @@ * Portions Copyright (c) 1994, Regents of the University of California * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/utils/adt/like.c,v 1.34 2000/04/12 17:15:50 momjian Exp $ + * $Header: /cvsroot/pgsql/src/backend/utils/adt/like.c,v 1.34.2.1 2000/07/07 21:29:57 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -50,7 +50,8 @@ fixedlen_like(char *s, struct varlena * p, int charlen) (void) pg_mb2wchar_with_len((unsigned char *) s, sterm, charlen); #else sterm = (char *) palloc(charlen + 1); - StrNCpy(sterm, s, charlen + 1); + memcpy(sterm, s, charlen); + sterm[charlen] = '\0'; #endif /* diff --git a/src/backend/utils/adt/regexp.c b/src/backend/utils/adt/regexp.c index 052b68137f8..95d6136bf10 100644 --- a/src/backend/utils/adt/regexp.c +++ b/src/backend/utils/adt/regexp.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/utils/adt/regexp.c,v 1.30 2000/01/26 05:57:14 momjian Exp $ + * $Header: /cvsroot/pgsql/src/backend/utils/adt/regexp.c,v 1.30.2.1 2000/07/07 21:29:57 tgl Exp $ * * Alistair Crooks added the code for the regex caching * 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) /* be sure sterm is null-terminated */ sterm = (char *) palloc(charlen + 1); - StrNCpy(sterm, s, charlen + 1); + memcpy(sterm, s, charlen); + sterm[charlen] = '\0'; result = RE_compile_and_execute(p, sterm, cflags); diff --git a/src/backend/utils/adt/varchar.c b/src/backend/utils/adt/varchar.c index 0837b8b63a1..dcb1503d42f 100644 --- a/src/backend/utils/adt/varchar.c +++ b/src/backend/utils/adt/varchar.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/utils/adt/varchar.c,v 1.60 2000/04/12 17:15:52 momjian Exp $ + * $Header: /cvsroot/pgsql/src/backend/utils/adt/varchar.c,v 1.60.2.1 2000/07/07 21:29:57 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -117,7 +117,8 @@ bpcharout(char *s) { len = VARSIZE(s) - VARHDRSZ; result = (char *) palloc(len + 1); - StrNCpy(result, VARDATA(s), len + 1); /* these are blank-padded */ + memcpy(result, VARDATA(s), len); + result[len] = '\0'; } #ifdef CYR_RECODE @@ -249,8 +250,8 @@ bpchar_name(char *s) return NULL; len = VARSIZE(s) - VARHDRSZ; - if (len > NAMEDATALEN) - len = NAMEDATALEN; + if (len >= NAMEDATALEN) + len = NAMEDATALEN-1; while (len > 0) { @@ -265,7 +266,7 @@ bpchar_name(char *s) #endif result = (NameData *) palloc(NAMEDATALEN); - StrNCpy(NameStr(*result), VARDATA(s), NAMEDATALEN); + memcpy(NameStr(*result), VARDATA(s), len); /* now null pad to full length... */ while (len < NAMEDATALEN) @@ -297,7 +298,7 @@ name_bpchar(NameData *s) #endif result = (char *) palloc(VARHDRSZ + len); - strncpy(VARDATA(result), NameStr(*s), len); + memcpy(VARDATA(result), NameStr(*s), len); VARSIZE(result) = len + VARHDRSZ; return result; @@ -354,7 +355,8 @@ varcharout(char *s) { len = VARSIZE(s) - VARHDRSZ; result = (char *) palloc(len + 1); - StrNCpy(result, VARDATA(s), len + 1); + memcpy(result, VARDATA(s), len); + result[len] = '\0'; } #ifdef CYR_RECODE