diff --git a/contrib/tsearch2/dict_syn.c b/contrib/tsearch2/dict_syn.c index 05cb110250..1e3a71cee1 100644 --- a/contrib/tsearch2/dict_syn.c +++ b/contrib/tsearch2/dict_syn.c @@ -1,4 +1,4 @@ -/* $PostgreSQL: pgsql/contrib/tsearch2/dict_syn.c,v 1.11 2006/12/04 09:26:57 teodor Exp $ */ +/* $PostgreSQL: pgsql/contrib/tsearch2/dict_syn.c,v 1.12 2007/02/08 11:10:26 petere Exp $ */ /* * ISpell interface @@ -101,7 +101,7 @@ syn_init(PG_FUNCTION_ARGS) } memset(d, 0, sizeof(DictSyn)); - while (fgets(buf, SYNBUFLEN, fin)) + while (fgets(buf, sizeof(buf), fin)) { slen = strlen(buf) - 1; buf[slen] = '\0'; diff --git a/contrib/tsearch2/stopword.c b/contrib/tsearch2/stopword.c index b9b7699594..d8bb54aca3 100644 --- a/contrib/tsearch2/stopword.c +++ b/contrib/tsearch2/stopword.c @@ -45,7 +45,7 @@ readstoplist(text *in, StopList * s) errmsg("could not open file \"%s\": %m", filename))); - while (fgets(buf, STOPBUFLEN, hin)) + while (fgets(buf, sizeof(buf), hin)) { buf[strlen(buf) - 1] = '\0'; pg_verifymbstr(buf, strlen(buf), false); diff --git a/src/backend/access/transam/xlog.c b/src/backend/access/transam/xlog.c index b1a5a57b2f..fa6731a386 100644 --- a/src/backend/access/transam/xlog.c +++ b/src/backend/access/transam/xlog.c @@ -7,7 +7,7 @@ * Portions Copyright (c) 1996-2007, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * - * $PostgreSQL: pgsql/src/backend/access/transam/xlog.c,v 1.262 2007/02/07 16:44:47 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/access/transam/xlog.c,v 1.263 2007/02/08 11:10:27 petere Exp $ * *------------------------------------------------------------------------- */ @@ -3374,7 +3374,7 @@ readTimeLineHistory(TimeLineID targetTLI) /* * Parse the file... */ - while (fgets(fline, MAXPGPATH, fd) != NULL) + while (fgets(fline, sizeof(fline), fd) != NULL) { /* skip leading whitespace and check for # comment */ char *ptr; @@ -4248,7 +4248,7 @@ readRecoveryCommandFile(void) /* * Parse the file... */ - while (fgets(cmdline, MAXPGPATH, fd) != NULL) + while (fgets(cmdline, sizeof(cmdline), fd) != NULL) { /* skip leading whitespace and check for # comment */ char *ptr; diff --git a/src/bin/pg_dump/pg_backup_files.c b/src/bin/pg_dump/pg_backup_files.c index 8216d979d8..72eedac2e4 100644 --- a/src/bin/pg_dump/pg_backup_files.c +++ b/src/bin/pg_dump/pg_backup_files.c @@ -20,7 +20,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/bin/pg_dump/pg_backup_files.c,v 1.29 2006/07/14 14:52:26 momjian Exp $ + * $PostgreSQL: pgsql/src/bin/pg_dump/pg_backup_files.c,v 1.30 2007/02/08 11:10:27 petere Exp $ * *------------------------------------------------------------------------- */ @@ -321,26 +321,25 @@ _getBlobTocEntry(ArchiveHandle *AH, Oid *oid, char fname[K_STD_BUF_SIZE]) { lclContext *ctx = (lclContext *) AH->formatData; char blobTe[K_STD_BUF_SIZE]; - size_t fpos; - size_t eos; - if (fgets(&blobTe[0], K_STD_BUF_SIZE - 1, ctx->blobToc) != NULL) + if (fgets(blobTe, sizeof(blobTe), ctx->blobToc) != NULL) { + size_t fpos; + size_t eos; + *oid = atooid(blobTe); fpos = strcspn(blobTe, " "); - strncpy(fname, &blobTe[fpos + 1], K_STD_BUF_SIZE - 1); + strlcpy(fname, &blobTe[fpos + 1], K_STD_BUF_SIZE); eos = strlen(fname) - 1; if (fname[eos] == '\n') fname[eos] = '\0'; - } else { - *oid = 0; fname[0] = '\0'; } diff --git a/src/bin/psql/common.c b/src/bin/psql/common.c index 024cf1cd9c..d05c241c69 100644 --- a/src/bin/psql/common.c +++ b/src/bin/psql/common.c @@ -3,7 +3,7 @@ * * Copyright (c) 2000-2007, PostgreSQL Global Development Group * - * $PostgreSQL: pgsql/src/bin/psql/common.c,v 1.132 2007/01/05 22:19:49 momjian Exp $ + * $PostgreSQL: pgsql/src/bin/psql/common.c,v 1.133 2007/02/08 11:10:27 petere Exp $ */ #include "postgres_fe.h" #include "common.h" @@ -1497,7 +1497,7 @@ expand_tilde(char **filename) if (*(fn + 1) == '\0') get_home_path(home); /* ~ or ~/ only */ else if ((pw = getpwnam(fn + 1)) != NULL) - StrNCpy(home, pw->pw_dir, MAXPGPATH); /* ~user */ + strlcpy(home, pw->pw_dir, sizeof(home)); /* ~user */ *p = oldp; if (strlen(home) != 0) diff --git a/src/bin/psql/copy.c b/src/bin/psql/copy.c index e655f46c34..eb205ecbc2 100644 --- a/src/bin/psql/copy.c +++ b/src/bin/psql/copy.c @@ -3,7 +3,7 @@ * * Copyright (c) 2000-2007, PostgreSQL Global Development Group * - * $PostgreSQL: pgsql/src/bin/psql/copy.c,v 1.73 2007/02/05 15:22:18 adunstan Exp $ + * $PostgreSQL: pgsql/src/bin/psql/copy.c,v 1.74 2007/02/08 11:10:27 petere Exp $ */ #include "postgres_fe.h" #include "copy.h" @@ -801,7 +801,7 @@ handleCopyIn(PGconn *conn, FILE *copystream, bool isbinary) /* enable longjmp while waiting for input */ sigint_interrupt_enabled = true; - fgresult = fgets(buf, COPYBUFSIZ, copystream); + fgresult = fgets(buf, sizeof(buf), copystream); sigint_interrupt_enabled = false; diff --git a/src/bin/psql/prompt.c b/src/bin/psql/prompt.c index b7628e7a7f..1df630ae6b 100644 --- a/src/bin/psql/prompt.c +++ b/src/bin/psql/prompt.c @@ -3,7 +3,7 @@ * * Copyright (c) 2000-2007, PostgreSQL Global Development Group * - * $PostgreSQL: pgsql/src/bin/psql/prompt.c,v 1.49 2007/01/05 22:19:49 momjian Exp $ + * $PostgreSQL: pgsql/src/bin/psql/prompt.c,v 1.50 2007/02/08 11:10:27 petere Exp $ */ #include "postgres_fe.h" @@ -96,10 +96,10 @@ get_prompt(promptStatus_t status) destination[0] = '\0'; for (p = prompt_string; - *p && strlen(destination) < MAX_PROMPT_SIZE; + *p && strlen(destination) < sizeof(destination) - 1; p++) { - memset(buf, 0, MAX_PROMPT_SIZE + 1); + memset(buf, 0, sizeof(buf)); if (esc) { switch (*p) @@ -107,7 +107,7 @@ get_prompt(promptStatus_t status) /* Current database */ case '/': if (pset.db) - strncpy(buf, PQdb(pset.db), MAX_PROMPT_SIZE); + strlcpy(buf, PQdb(pset.db), sizeof(buf)); break; case '~': if (pset.db) @@ -116,9 +116,9 @@ get_prompt(promptStatus_t status) if (strcmp(PQdb(pset.db), PQuser(pset.db)) == 0 || ((var = getenv("PGDATABASE")) && strcmp(var, PQdb(pset.db)) == 0)) - strcpy(buf, "~"); + strlcpy(buf, "~", sizeof(buf)); else - strncpy(buf, PQdb(pset.db), MAX_PROMPT_SIZE); + strlcpy(buf, PQdb(pset.db), sizeof(buf)); } break; @@ -132,7 +132,7 @@ get_prompt(promptStatus_t status) /* INET socket */ if (host && host[0] && !is_absolute_path(host)) { - strncpy(buf, host, MAX_PROMPT_SIZE); + strlcpy(buf, host, sizeof(buf)); if (*p == 'm') buf[strcspn(buf, ".")] = '\0'; } @@ -143,9 +143,9 @@ get_prompt(promptStatus_t status) if (!host || strcmp(host, DEFAULT_PGSOCKET_DIR) == 0 || *p == 'm') - strncpy(buf, "[local]", MAX_PROMPT_SIZE); + strlcpy(buf, "[local]", sizeof(buf)); else - snprintf(buf, MAX_PROMPT_SIZE, "[local:%s]", host); + snprintf(buf, sizeof(buf), "[local:%s]", host); } #endif } @@ -153,12 +153,12 @@ get_prompt(promptStatus_t status) /* DB server port number */ case '>': if (pset.db && PQport(pset.db)) - strncpy(buf, PQport(pset.db), MAX_PROMPT_SIZE); + strlcpy(buf, PQport(pset.db), sizeof(buf)); break; /* DB server user name */ case 'n': if (pset.db) - strncpy(buf, session_username(), MAX_PROMPT_SIZE); + strlcpy(buf, session_username(), sizeof(buf)); break; case '0': @@ -252,7 +252,7 @@ get_prompt(promptStatus_t status) fd = popen(file, "r"); if (fd) { - fgets(buf, MAX_PROMPT_SIZE - 1, fd); + fgets(buf, sizeof(buf), fd); pclose(fd); } if (strlen(buf) > 0 && buf[strlen(buf) - 1] == '\n') @@ -274,7 +274,7 @@ get_prompt(promptStatus_t status) name[nameend] = '\0'; val = GetVariable(pset.vars, name); if (val) - strncpy(buf, val, MAX_PROMPT_SIZE); + strlcpy(buf, val, sizeof(buf)); free(name); p += nameend + 1; break; @@ -312,9 +312,8 @@ get_prompt(promptStatus_t status) } if (!esc) - strncat(destination, buf, MAX_PROMPT_SIZE - strlen(destination)); + strlcat(destination, buf, sizeof(destination)); } - destination[MAX_PROMPT_SIZE] = '\0'; return destination; } diff --git a/src/interfaces/libpq/fe-connect.c b/src/interfaces/libpq/fe-connect.c index cc0c6613c4..891bf3f9ac 100644 --- a/src/interfaces/libpq/fe-connect.c +++ b/src/interfaces/libpq/fe-connect.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/interfaces/libpq/fe-connect.c,v 1.341 2007/01/05 22:20:00 momjian Exp $ + * $PostgreSQL: pgsql/src/interfaces/libpq/fe-connect.c,v 1.342 2007/02/08 11:10:27 petere Exp $ * *------------------------------------------------------------------------- */ @@ -2845,11 +2845,11 @@ parseServiceInfo(PQconninfoOption *options, PQExpBuffer errorMessage) return 1; } - while ((line = fgets(buf, MAXBUFSIZE - 1, f)) != NULL) + while ((line = fgets(buf, sizeof(buf), f)) != NULL) { linenr++; - if (strlen(line) >= MAXBUFSIZE - 2) + if (strlen(line) >= sizeof(buf) - 1) { fclose(f); printfPQExpBuffer(errorMessage, @@ -3654,7 +3654,7 @@ PasswordFromFile(char *hostname, char *port, char *dbname, char *username) *ret; int len; - fgets(buf, LINELEN - 1, fp); + fgets(buf, sizeof(buf), fp); len = strlen(buf); if (len == 0) diff --git a/src/interfaces/libpq/fe-secure.c b/src/interfaces/libpq/fe-secure.c index a471c0b11f..2d387b19d2 100644 --- a/src/interfaces/libpq/fe-secure.c +++ b/src/interfaces/libpq/fe-secure.c @@ -11,7 +11,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/interfaces/libpq/fe-secure.c,v 1.91 2007/01/26 17:45:41 neilc Exp $ + * $PostgreSQL: pgsql/src/interfaces/libpq/fe-secure.c,v 1.92 2007/02/08 11:10:27 petere Exp $ * * NOTES * [ Most of these notes are wrong/obsolete, but perhaps not all ] @@ -1018,8 +1018,7 @@ SSLerrmessage(void) errreason = ERR_reason_error_string(errcode); if (errreason != NULL) { - strncpy(errbuf, errreason, SSL_ERR_LEN - 1); - errbuf[SSL_ERR_LEN - 1] = '\0'; + strlcpy(errbuf, errreason, SSL_ERR_LEN); return errbuf; } snprintf(errbuf, SSL_ERR_LEN, libpq_gettext("SSL error code %lu"), errcode); diff --git a/src/tools/entab/entab.c b/src/tools/entab/entab.c index 62279122f8..7a87e0d5ab 100644 --- a/src/tools/entab/entab.c +++ b/src/tools/entab/entab.c @@ -2,7 +2,7 @@ ** entab.c - add tabs to a text file ** by Bruce Momjian (root@candle.pha.pa.us) ** -** $PostgreSQL: pgsql/src/tools/entab/entab.c,v 1.17 2007/02/01 19:10:30 momjian Exp $ +** $PostgreSQL: pgsql/src/tools/entab/entab.c,v 1.18 2007/02/08 11:10:27 petere Exp $ ** ** version 1.3 ** @@ -108,7 +108,7 @@ main(int argc, char **argv) escaped = FALSE; - while (fgets(in_line, BUFSIZ, in_file) != NULL) + while (fgets(in_line, sizeof(in_line), in_file) != NULL) { col_in_tab = 0; prv_spaces = 0;