diff --git a/contrib/chkpass/chkpass.c b/contrib/chkpass/chkpass.c index 0842291eaf..642212de51 100644 --- a/contrib/chkpass/chkpass.c +++ b/contrib/chkpass/chkpass.c @@ -4,7 +4,7 @@ * darcy@druid.net * http://www.druid.net/darcy/ * - * $PostgreSQL: pgsql/contrib/chkpass/chkpass.c,v 1.17 2006/07/14 05:28:27 tgl Exp $ + * $PostgreSQL: pgsql/contrib/chkpass/chkpass.c,v 1.18 2007/02/07 00:52:35 petere Exp $ * best viewed with tabs set to 4 */ @@ -76,8 +76,7 @@ chkpass_in(PG_FUNCTION_ARGS) if (*str == ':') { result = (chkpass *) palloc(sizeof(chkpass)); - strncpy(result->password, str + 1, 13); - result->password[13] = 0; + strlcpy(result->password, str + 1, 13 + 1); PG_RETURN_POINTER(result); } @@ -150,8 +149,7 @@ chkpass_eq(PG_FUNCTION_ARGS) if (a2->vl_len < 12) sz = a2->vl_len - 4; - strncpy(str, a2->vl_dat, sz); - str[sz] = 0; + strlcpy(str, a2->vl_dat, sz + 1); PG_RETURN_BOOL(strcmp(a1->password, crypt(str, a1->password)) == 0); } @@ -166,7 +164,6 @@ chkpass_ne(PG_FUNCTION_ARGS) if (a2->vl_len < 12) sz = a2->vl_len - 4; - strncpy(str, a2->vl_dat, sz); - str[sz] = 0; + strlcpy(str, a2->vl_dat, sz + 1); PG_RETURN_BOOL(strcmp(a1->password, crypt(str, a1->password)) != 0); } diff --git a/contrib/dblink/dblink.c b/contrib/dblink/dblink.c index f4c0662406..568ac1e5f7 100644 --- a/contrib/dblink/dblink.c +++ b/contrib/dblink/dblink.c @@ -8,7 +8,7 @@ * Darko Prenosil * Shridhar Daithankar * - * $PostgreSQL: pgsql/contrib/dblink/dblink.c,v 1.61 2007/01/05 22:19:17 momjian Exp $ + * $PostgreSQL: pgsql/contrib/dblink/dblink.c,v 1.62 2007/02/07 00:52:35 petere Exp $ * Copyright (c) 2001-2007, PostgreSQL Global Development Group * ALL RIGHTS RESERVED; * @@ -2248,7 +2248,7 @@ createNewConnection(const char *name, remoteConn * rconn) errmsg("duplicate connection name"))); hentry->rconn = rconn; - strncpy(hentry->name, name, NAMEDATALEN - 1); + strlcpy(hentry->name, name, sizeof(hentry->name)); } static void diff --git a/src/backend/libpq/be-secure.c b/src/backend/libpq/be-secure.c index ac0196cead..8a54275d9c 100644 --- a/src/backend/libpq/be-secure.c +++ b/src/backend/libpq/be-secure.c @@ -11,7 +11,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/libpq/be-secure.c,v 1.76 2007/01/26 20:06:52 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/libpq/be-secure.c,v 1.77 2007/02/07 00:52:35 petere Exp $ * * Since the server static private key ($DataDir/server.key) * will normally be stored unencrypted so that the database @@ -933,8 +933,8 @@ aloop: port->peer = SSL_get_peer_certificate(port->ssl); if (port->peer == NULL) { - strncpy(port->peer_dn, "(anonymous)", sizeof(port->peer_dn)); - strncpy(port->peer_cn, "(anonymous)", sizeof(port->peer_cn)); + strlcpy(port->peer_dn, "(anonymous)", sizeof(port->peer_dn)); + strlcpy(port->peer_cn, "(anonymous)", sizeof(port->peer_cn)); } else { diff --git a/src/backend/utils/fmgr/dfmgr.c b/src/backend/utils/fmgr/dfmgr.c index fdbcc69cde..f660c19e29 100644 --- a/src/backend/utils/fmgr/dfmgr.c +++ b/src/backend/utils/fmgr/dfmgr.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/utils/fmgr/dfmgr.c,v 1.93 2007/01/05 22:19:43 momjian Exp $ + * $PostgreSQL: pgsql/src/backend/utils/fmgr/dfmgr.c,v 1.94 2007/02/07 00:52:35 petere Exp $ * *------------------------------------------------------------------------- */ @@ -539,8 +539,7 @@ find_in_dynamic_libpath(const char *basename) len = piece - p; piece = palloc(len + 1); - strncpy(piece, p, len); - piece[len] = '\0'; + strlcpy(piece, p, len + 1); mangled = substitute_libpath_macro(piece); pfree(piece); diff --git a/src/backend/utils/misc/guc.c b/src/backend/utils/misc/guc.c index 1c8a4893d9..f7e6536f93 100644 --- a/src/backend/utils/misc/guc.c +++ b/src/backend/utils/misc/guc.c @@ -10,7 +10,7 @@ * Written by Peter Eisentraut . * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/utils/misc/guc.c,v 1.372 2007/02/01 19:10:28 momjian Exp $ + * $PostgreSQL: pgsql/src/backend/utils/misc/guc.c,v 1.373 2007/02/07 00:52:35 petere Exp $ * *-------------------------------------------------------------------- */ @@ -5729,8 +5729,7 @@ ParseLongOption(const char *string, char **name, char **value) if (string[equal_pos] == '=') { *name = guc_malloc(FATAL, equal_pos + 1); - strncpy(*name, string, equal_pos); - (*name)[equal_pos] = '\0'; + strlcpy(*name, string, equal_pos + 1); *value = guc_strdup(FATAL, &string[equal_pos + 1]); } diff --git a/src/bin/psql/tab-complete.c b/src/bin/psql/tab-complete.c index a6fc38c5ea..8012b70a4d 100644 --- a/src/bin/psql/tab-complete.c +++ b/src/bin/psql/tab-complete.c @@ -3,7 +3,7 @@ * * Copyright (c) 2000-2007, PostgreSQL Global Development Group * - * $PostgreSQL: pgsql/src/bin/psql/tab-complete.c,v 1.157 2007/01/05 22:19:49 momjian Exp $ + * $PostgreSQL: pgsql/src/bin/psql/tab-complete.c,v 1.158 2007/02/07 00:52:35 petere Exp $ */ /*---------------------------------------------------------------------- @@ -2389,9 +2389,7 @@ previous_word(int point, int skip) /* make a copy */ s = pg_malloc(end - start + 2); - - strncpy(s, &rl_line_buffer[start], end - start + 1); - s[end - start + 1] = '\0'; + strlcpy(s, &rl_line_buffer[start], end - start + 2); return s; } @@ -2460,8 +2458,7 @@ dequote_file_name(char *text, char quote_char) length = strlen(text); s = pg_malloc(length - 2 + 1); - strncpy(s, text +1, length - 2); - s[length] = '\0'; + strlcpy(s, text +1, length - 2 + 1); return s; } diff --git a/src/interfaces/ecpg/preproc/descriptor.c b/src/interfaces/ecpg/preproc/descriptor.c index f81d3c330c..3da779a8b0 100644 --- a/src/interfaces/ecpg/preproc/descriptor.c +++ b/src/interfaces/ecpg/preproc/descriptor.c @@ -1,7 +1,7 @@ /* * functions needed for descriptor handling * - * $PostgreSQL: pgsql/src/interfaces/ecpg/preproc/descriptor.c,v 1.24 2006/03/11 04:38:40 momjian Exp $ + * $PostgreSQL: pgsql/src/interfaces/ecpg/preproc/descriptor.c,v 1.25 2007/02/07 00:52:35 petere Exp $ * * since descriptor might be either a string constant or a string var * we need to check for a constant if we expect a constant @@ -323,7 +323,6 @@ descriptor_variable(const char *name, int input) {descriptor_names[1], (struct ECPGtype *) & descriptor_type, 0, NULL} }; - strncpy(descriptor_names[input], name, MAX_DESCRIPTOR_NAMELEN); - descriptor_names[input][MAX_DESCRIPTOR_NAMELEN - 1] = 0; + strlcpy(descriptor_names[input], name, sizeof(descriptor_names[input])); return (struct variable *) & varspace[input]; } diff --git a/src/test/regress/pg_regress.c b/src/test/regress/pg_regress.c index b06dd1bf2c..6aee04c63f 100644 --- a/src/test/regress/pg_regress.c +++ b/src/test/regress/pg_regress.c @@ -11,7 +11,7 @@ * Portions Copyright (c) 1996-2007, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * - * $PostgreSQL: pgsql/src/test/regress/pg_regress.c,v 1.28 2007/02/01 19:10:30 momjian Exp $ + * $PostgreSQL: pgsql/src/test/regress/pg_regress.c,v 1.29 2007/02/07 00:52:35 petere Exp $ * *------------------------------------------------------------------------- */ @@ -349,8 +349,7 @@ replace_string(char *string, char *replace, char *replacement) { char *dup = strdup(string); - strncpy(string, dup, ptr - string); - string[ptr - string] = 0; + strlcpy(string, dup, ptr - string + 1); strcat(string, replacement); strcat(string, dup + (ptr - string) + strlen(replace)); free(dup);