aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Eisentraut <peter_e@gmx.net>2017-04-11 14:13:31 -0400
committerPeter Eisentraut <peter_e@gmx.net>2017-05-15 13:31:42 -0400
commit7fc5615afdda0a1bae21c7d0fc47a376e7a8eda2 (patch)
tree6fd23fc7ee61f18ac91ce4edaa3738bfac02ee57
parent2dca50b764d40c8cf4edeaaaf09a3292aeb7026e (diff)
downloadpostgresql-7fc5615afdda0a1bae21c7d0fc47a376e7a8eda2.tar.gz
postgresql-7fc5615afdda0a1bae21c7d0fc47a376e7a8eda2.zip
Fix new warnings from GCC 7
This addresses the new warning types -Wformat-truncation -Wformat-overflow that are part of -Wall, via -Wformat, in GCC 7.
-rw-r--r--contrib/pg_archivecleanup/pg_archivecleanup.c4
-rw-r--r--contrib/pg_standby/pg_standby.c6
-rw-r--r--src/backend/access/heap/rewriteheap.c4
-rw-r--r--src/backend/access/transam/xlog.c4
-rw-r--r--src/backend/postmaster/pgstat.c4
-rw-r--r--src/backend/replication/basebackup.c6
-rw-r--r--src/backend/replication/logical/reorderbuffer.c2
-rw-r--r--src/backend/replication/logical/snapbuild.c4
-rw-r--r--src/backend/replication/slot.c6
-rw-r--r--src/backend/storage/file/copydir.c10
-rw-r--r--src/backend/storage/file/fd.c12
-rw-r--r--src/backend/storage/file/reinit.c8
-rw-r--r--src/backend/storage/ipc/dsm.c4
-rw-r--r--src/backend/utils/adt/dbsize.c14
-rw-r--r--src/backend/utils/cache/relcache.c4
-rw-r--r--src/backend/utils/error/elog.c2
-rw-r--r--src/backend/utils/time/snapmgr.c4
-rw-r--r--src/bin/initdb/initdb.c4
-rw-r--r--src/bin/pg_basebackup/pg_receivexlog.c2
-rw-r--r--src/bin/pg_resetxlog/pg_resetxlog.c12
-rw-r--r--src/timezone/pgtz.c4
21 files changed, 60 insertions, 60 deletions
diff --git a/contrib/pg_archivecleanup/pg_archivecleanup.c b/contrib/pg_archivecleanup/pg_archivecleanup.c
index 212b267fcfa..9f97153ca0f 100644
--- a/contrib/pg_archivecleanup/pg_archivecleanup.c
+++ b/contrib/pg_archivecleanup/pg_archivecleanup.c
@@ -30,7 +30,7 @@ char *additional_ext = NULL; /* Extension to remove from filenames */
char *archiveLocation; /* where to find the archive? */
char *restartWALFileName; /* the file from which we can restart restore */
-char WALFilePath[MAXPGPATH]; /* the file path including archive */
+char WALFilePath[MAXPGPATH * 2]; /* the file path including archive */
char exclusiveCleanupFileName[MAXPGPATH]; /* the oldest file we
* want to remain in
* archive */
@@ -133,7 +133,7 @@ CleanupPriorWALFiles(void)
* extension that might have been chopped off before testing
* the sequence.
*/
- snprintf(WALFilePath, MAXPGPATH, "%s/%s",
+ snprintf(WALFilePath, sizeof(WALFilePath), "%s/%s",
archiveLocation, xlde->d_name);
if (dryrun)
diff --git a/contrib/pg_standby/pg_standby.c b/contrib/pg_standby/pg_standby.c
index 716c7dd9bdb..80ab599b977 100644
--- a/contrib/pg_standby/pg_standby.c
+++ b/contrib/pg_standby/pg_standby.c
@@ -55,7 +55,7 @@ char *xlogFilePath; /* where we are going to restore to */
char *nextWALFileName; /* the file we need to get from archive */
char *restartWALFileName; /* the file from which we can restart restore */
char *priorWALFileName; /* the file we need to get from archive */
-char WALFilePath[MAXPGPATH]; /* the file path including archive */
+char WALFilePath[MAXPGPATH * 2]; /* the file path including archive */
char restoreCommand[MAXPGPATH]; /* run this to restore */
char exclusiveCleanupFileName[MAXPGPATH]; /* the file we need to
* get from archive */
@@ -266,9 +266,9 @@ CustomizableCleanupPriorWALFiles(void)
strcmp(xlde->d_name + 8, exclusiveCleanupFileName + 8) < 0)
{
#ifdef WIN32
- snprintf(WALFilePath, MAXPGPATH, "%s\\%s", archiveLocation, xlde->d_name);
+ snprintf(WALFilePath, sizeof(WALFilePath), "%s\\%s", archiveLocation, xlde->d_name);
#else
- snprintf(WALFilePath, MAXPGPATH, "%s/%s", archiveLocation, xlde->d_name);
+ snprintf(WALFilePath, sizeof(WALFilePath), "%s/%s", archiveLocation, xlde->d_name);
#endif
if (debug)
diff --git a/src/backend/access/heap/rewriteheap.c b/src/backend/access/heap/rewriteheap.c
index 158c6c03439..07f08a4d89f 100644
--- a/src/backend/access/heap/rewriteheap.c
+++ b/src/backend/access/heap/rewriteheap.c
@@ -1204,7 +1204,7 @@ CheckPointLogicalRewriteHeap(void)
XLogRecPtr redo;
DIR *mappings_dir;
struct dirent *mapping_de;
- char path[MAXPGPATH];
+ char path[MAXPGPATH + 20];
/*
* We start of with a minimum of the last redo pointer. No new decoding
@@ -1235,7 +1235,7 @@ CheckPointLogicalRewriteHeap(void)
strcmp(mapping_de->d_name, "..") == 0)
continue;
- snprintf(path, MAXPGPATH, "pg_logical/mappings/%s", mapping_de->d_name);
+ snprintf(path, sizeof(path), "pg_logical/mappings/%s", mapping_de->d_name);
if (lstat(path, &statbuf) == 0 && !S_ISREG(statbuf.st_mode))
continue;
diff --git a/src/backend/access/transam/xlog.c b/src/backend/access/transam/xlog.c
index d8f3d5c5170..17a26926599 100644
--- a/src/backend/access/transam/xlog.c
+++ b/src/backend/access/transam/xlog.c
@@ -3987,7 +3987,7 @@ CleanupBackupHistory(void)
{
DIR *xldir;
struct dirent *xlde;
- char path[MAXPGPATH];
+ char path[MAXPGPATH + sizeof(XLOGDIR)];
xldir = AllocateDir(XLOGDIR);
if (xldir == NULL)
@@ -4008,7 +4008,7 @@ CleanupBackupHistory(void)
ereport(DEBUG2,
(errmsg("removing transaction log backup history file \"%s\"",
xlde->d_name)));
- snprintf(path, MAXPGPATH, XLOGDIR "/%s", xlde->d_name);
+ snprintf(path, sizeof(path), XLOGDIR "/%s", xlde->d_name);
unlink(path);
XLogArchiveCleanup(xlde->d_name);
}
diff --git a/src/backend/postmaster/pgstat.c b/src/backend/postmaster/pgstat.c
index 085b94acfe7..e4cc0dc3521 100644
--- a/src/backend/postmaster/pgstat.c
+++ b/src/backend/postmaster/pgstat.c
@@ -567,7 +567,7 @@ pgstat_reset_remove_files(const char *directory)
{
DIR *dir;
struct dirent *entry;
- char fname[MAXPGPATH];
+ char fname[MAXPGPATH * 2];
dir = AllocateDir(directory);
while ((entry = ReadDir(dir, directory)) != NULL)
@@ -597,7 +597,7 @@ pgstat_reset_remove_files(const char *directory)
strcmp(entry->d_name + nchars, "stat") != 0)
continue;
- snprintf(fname, MAXPGPATH, "%s/%s", directory,
+ snprintf(fname, sizeof(fname), "%s/%s", directory,
entry->d_name);
unlink(fname);
}
diff --git a/src/backend/replication/basebackup.c b/src/backend/replication/basebackup.c
index bcb5eff620b..e4074d30351 100644
--- a/src/backend/replication/basebackup.c
+++ b/src/backend/replication/basebackup.c
@@ -167,7 +167,7 @@ perform_base_backup(basebackup_options *opt, DIR *tblspcdir)
/* Collect information about all tablespaces */
while ((de = ReadDir(tblspcdir, "pg_tblspc")) != NULL)
{
- char fullpath[MAXPGPATH];
+ char fullpath[MAXPGPATH + 10];
char linkpath[MAXPGPATH];
char *relpath = NULL;
int rllen;
@@ -930,7 +930,7 @@ sendDir(char *path, int basepathlen, bool sizeonly, List *tablespaces)
{
DIR *dir;
struct dirent *de;
- char pathbuf[MAXPGPATH];
+ char pathbuf[MAXPGPATH * 2];
struct stat statbuf;
int64 size = 0;
@@ -978,7 +978,7 @@ sendDir(char *path, int basepathlen, bool sizeonly, List *tablespaces)
"and should not be used. "
"Try taking another online backup.")));
- snprintf(pathbuf, MAXPGPATH, "%s/%s", path, de->d_name);
+ snprintf(pathbuf, sizeof(pathbuf), "%s/%s", path, de->d_name);
/* Skip postmaster.pid and postmaster.opts in the data directory */
if (strcmp(pathbuf, "./postmaster.pid") == 0 ||
diff --git a/src/backend/replication/logical/reorderbuffer.c b/src/backend/replication/logical/reorderbuffer.c
index e5c3625abf5..56490689701 100644
--- a/src/backend/replication/logical/reorderbuffer.c
+++ b/src/backend/replication/logical/reorderbuffer.c
@@ -2443,7 +2443,7 @@ StartupReorderBuffer(void)
while ((logical_de = ReadDir(logical_dir, "pg_replslot")) != NULL)
{
struct stat statbuf;
- char path[MAXPGPATH];
+ char path[MAXPGPATH * 2 + 12];
if (strcmp(logical_de->d_name, ".") == 0 ||
strcmp(logical_de->d_name, "..") == 0)
diff --git a/src/backend/replication/logical/snapbuild.c b/src/backend/replication/logical/snapbuild.c
index b08afe6694a..9359fc2386d 100644
--- a/src/backend/replication/logical/snapbuild.c
+++ b/src/backend/replication/logical/snapbuild.c
@@ -1814,7 +1814,7 @@ CheckPointSnapBuild(void)
XLogRecPtr redo;
DIR *snap_dir;
struct dirent *snap_de;
- char path[MAXPGPATH];
+ char path[MAXPGPATH + 21];
/*
* We start of with a minimum of the last redo pointer. No new replication
@@ -1841,7 +1841,7 @@ CheckPointSnapBuild(void)
strcmp(snap_de->d_name, "..") == 0)
continue;
- snprintf(path, MAXPGPATH, "pg_logical/snapshots/%s", snap_de->d_name);
+ snprintf(path, sizeof(path), "pg_logical/snapshots/%s", snap_de->d_name);
if (lstat(path, &statbuf) == 0 && !S_ISREG(statbuf.st_mode))
{
diff --git a/src/backend/replication/slot.c b/src/backend/replication/slot.c
index f108979e6f1..7f04b22d2d6 100644
--- a/src/backend/replication/slot.c
+++ b/src/backend/replication/slot.c
@@ -860,13 +860,13 @@ StartupReplicationSlots(void)
while ((replication_de = ReadDir(replication_dir, "pg_replslot")) != NULL)
{
struct stat statbuf;
- char path[MAXPGPATH];
+ char path[MAXPGPATH + 12];
if (strcmp(replication_de->d_name, ".") == 0 ||
strcmp(replication_de->d_name, "..") == 0)
continue;
- snprintf(path, MAXPGPATH, "pg_replslot/%s", replication_de->d_name);
+ snprintf(path, sizeof(path), "pg_replslot/%s", replication_de->d_name);
/* we're only creating directories here, skip if it's not our's */
if (lstat(path, &statbuf) == 0 && !S_ISDIR(statbuf.st_mode))
@@ -1098,7 +1098,7 @@ RestoreSlotFromDisk(const char *name)
{
ReplicationSlotOnDisk cp;
int i;
- char path[MAXPGPATH];
+ char path[MAXPGPATH + 22];
int fd;
bool restored = false;
int readBytes;
diff --git a/src/backend/storage/file/copydir.c b/src/backend/storage/file/copydir.c
index e17b8947ef7..48d5dee797b 100644
--- a/src/backend/storage/file/copydir.c
+++ b/src/backend/storage/file/copydir.c
@@ -38,8 +38,8 @@ copydir(char *fromdir, char *todir, bool recurse)
{
DIR *xldir;
struct dirent *xlde;
- char fromfile[MAXPGPATH];
- char tofile[MAXPGPATH];
+ char fromfile[MAXPGPATH * 2];
+ char tofile[MAXPGPATH * 2];
if (mkdir(todir, S_IRWXU) != 0)
ereport(ERROR,
@@ -63,8 +63,8 @@ copydir(char *fromdir, char *todir, bool recurse)
strcmp(xlde->d_name, "..") == 0)
continue;
- snprintf(fromfile, MAXPGPATH, "%s/%s", fromdir, xlde->d_name);
- snprintf(tofile, MAXPGPATH, "%s/%s", todir, xlde->d_name);
+ snprintf(fromfile, sizeof(fromfile), "%s/%s", fromdir, xlde->d_name);
+ snprintf(tofile, sizeof(tofile), "%s/%s", todir, xlde->d_name);
if (lstat(fromfile, &fst) < 0)
ereport(ERROR,
@@ -103,7 +103,7 @@ copydir(char *fromdir, char *todir, bool recurse)
strcmp(xlde->d_name, "..") == 0)
continue;
- snprintf(tofile, MAXPGPATH, "%s/%s", todir, xlde->d_name);
+ snprintf(tofile, sizeof(tofile), "%s/%s", todir, xlde->d_name);
/*
* We don't need to sync subdirectories here since the recursive
diff --git a/src/backend/storage/file/fd.c b/src/backend/storage/file/fd.c
index ca1661b08ad..845023590ea 100644
--- a/src/backend/storage/file/fd.c
+++ b/src/backend/storage/file/fd.c
@@ -2453,7 +2453,7 @@ CleanupTempFiles(bool isProcExit)
void
RemovePgTempFiles(void)
{
- char temp_path[MAXPGPATH];
+ char temp_path[MAXPGPATH + 10 + sizeof(TABLESPACE_VERSION_DIRECTORY) + sizeof(PG_TEMP_FILES_DIR)];
DIR *spc_dir;
struct dirent *spc_de;
@@ -2501,7 +2501,7 @@ RemovePgTempFilesInDir(const char *tmpdirname)
{
DIR *temp_dir;
struct dirent *temp_de;
- char rm_path[MAXPGPATH];
+ char rm_path[MAXPGPATH * 2];
temp_dir = AllocateDir(tmpdirname);
if (temp_dir == NULL)
@@ -2542,7 +2542,7 @@ RemovePgTempRelationFiles(const char *tsdirname)
{
DIR *ts_dir;
struct dirent *de;
- char dbspace_path[MAXPGPATH];
+ char dbspace_path[MAXPGPATH * 2];
ts_dir = AllocateDir(tsdirname);
if (ts_dir == NULL)
@@ -2583,7 +2583,7 @@ RemovePgTempRelationFilesInDbspace(const char *dbspacedirname)
{
DIR *dbspace_dir;
struct dirent *de;
- char rm_path[MAXPGPATH];
+ char rm_path[MAXPGPATH * 2];
dbspace_dir = AllocateDir(dbspacedirname);
if (dbspace_dir == NULL)
@@ -2770,7 +2770,7 @@ walkdir(const char *path,
while ((de = ReadDirExtended(dir, path, elevel)) != NULL)
{
- char subpath[MAXPGPATH];
+ char subpath[MAXPGPATH * 2];
struct stat fst;
int sret;
@@ -2780,7 +2780,7 @@ walkdir(const char *path,
strcmp(de->d_name, "..") == 0)
continue;
- snprintf(subpath, MAXPGPATH, "%s/%s", path, de->d_name);
+ snprintf(subpath, sizeof(subpath), "%s/%s", path, de->d_name);
if (process_symlinks)
sret = stat(subpath, &fst);
diff --git a/src/backend/storage/file/reinit.c b/src/backend/storage/file/reinit.c
index fe10c56926f..65bd9a93427 100644
--- a/src/backend/storage/file/reinit.c
+++ b/src/backend/storage/file/reinit.c
@@ -48,7 +48,7 @@ typedef struct
void
ResetUnloggedRelations(int op)
{
- char temp_path[MAXPGPATH];
+ char temp_path[MAXPGPATH + 10 + sizeof(TABLESPACE_VERSION_DIRECTORY)];
DIR *spc_dir;
struct dirent *spc_de;
MemoryContext tmpctx,
@@ -106,7 +106,7 @@ ResetUnloggedRelationsInTablespaceDir(const char *tsdirname, int op)
{
DIR *ts_dir;
struct dirent *de;
- char dbspace_path[MAXPGPATH];
+ char dbspace_path[MAXPGPATH * 2];
ts_dir = AllocateDir(tsdirname);
if (ts_dir == NULL)
@@ -147,7 +147,7 @@ ResetUnloggedRelationsInDbspaceDir(const char *dbspacedirname, int op)
{
DIR *dbspace_dir;
struct dirent *de;
- char rm_path[MAXPGPATH];
+ char rm_path[MAXPGPATH * 2];
/* Caller must specify at least one operation. */
Assert((op & (UNLOGGED_RELATION_CLEANUP | UNLOGGED_RELATION_INIT)) != 0);
@@ -310,7 +310,7 @@ ResetUnloggedRelationsInDbspaceDir(const char *dbspacedirname, int op)
ForkNumber forkNum;
int oidchars;
char oidbuf[OIDCHARS + 1];
- char srcpath[MAXPGPATH];
+ char srcpath[MAXPGPATH * 2];
char dstpath[MAXPGPATH];
/* Skip anything that doesn't look like a relation data file. */
diff --git a/src/backend/storage/ipc/dsm.c b/src/backend/storage/ipc/dsm.c
index 7ce45caaf9b..43e68a61846 100644
--- a/src/backend/storage/ipc/dsm.c
+++ b/src/backend/storage/ipc/dsm.c
@@ -306,9 +306,9 @@ dsm_cleanup_for_mmap(void)
if (strncmp(dent->d_name, PG_DYNSHMEM_MMAP_FILE_PREFIX,
strlen(PG_DYNSHMEM_MMAP_FILE_PREFIX)) == 0)
{
- char buf[MAXPGPATH];
+ char buf[MAXPGPATH + sizeof(PG_DYNSHMEM_DIR)];
- snprintf(buf, MAXPGPATH, PG_DYNSHMEM_DIR "/%s", dent->d_name);
+ snprintf(buf, sizeof(buf), PG_DYNSHMEM_DIR "/%s", dent->d_name);
elog(DEBUG2, "removing file \"%s\"", buf);
diff --git a/src/backend/utils/adt/dbsize.c b/src/backend/utils/adt/dbsize.c
index 8c663379ae7..93dea1d9cf5 100644
--- a/src/backend/utils/adt/dbsize.c
+++ b/src/backend/utils/adt/dbsize.c
@@ -39,7 +39,7 @@ db_dir_size(const char *path)
int64 dirsize = 0;
struct dirent *direntry;
DIR *dirdesc;
- char filename[MAXPGPATH];
+ char filename[MAXPGPATH * 2];
dirdesc = AllocateDir(path);
@@ -56,7 +56,7 @@ db_dir_size(const char *path)
strcmp(direntry->d_name, "..") == 0)
continue;
- snprintf(filename, MAXPGPATH, "%s/%s", path, direntry->d_name);
+ snprintf(filename, sizeof(filename), "%s/%s", path, direntry->d_name);
if (stat(filename, &fst) < 0)
{
@@ -84,7 +84,7 @@ calculate_database_size(Oid dbOid)
DIR *dirdesc;
struct dirent *direntry;
char dirpath[MAXPGPATH];
- char pathname[MAXPGPATH];
+ char pathname[MAXPGPATH + 12 + sizeof(TABLESPACE_VERSION_DIRECTORY)];
AclResult aclresult;
/* User must have connect privilege for target database */
@@ -96,7 +96,7 @@ calculate_database_size(Oid dbOid)
/* Shared storage in pg_global is not counted */
/* Include pg_default storage */
- snprintf(pathname, MAXPGPATH, "base/%u", dbOid);
+ snprintf(pathname, sizeof(pathname), "base/%u", dbOid);
totalsize = db_dir_size(pathname);
/* Scan the non-default tablespaces */
@@ -116,7 +116,7 @@ calculate_database_size(Oid dbOid)
strcmp(direntry->d_name, "..") == 0)
continue;
- snprintf(pathname, MAXPGPATH, "pg_tblspc/%s/%s/%u",
+ snprintf(pathname, sizeof(pathname), "pg_tblspc/%s/%s/%u",
direntry->d_name, TABLESPACE_VERSION_DIRECTORY, dbOid);
totalsize += db_dir_size(pathname);
}
@@ -164,7 +164,7 @@ static int64
calculate_tablespace_size(Oid tblspcOid)
{
char tblspcPath[MAXPGPATH];
- char pathname[MAXPGPATH];
+ char pathname[MAXPGPATH * 2];
int64 totalsize = 0;
DIR *dirdesc;
struct dirent *direntry;
@@ -206,7 +206,7 @@ calculate_tablespace_size(Oid tblspcOid)
strcmp(direntry->d_name, "..") == 0)
continue;
- snprintf(pathname, MAXPGPATH, "%s/%s", tblspcPath, direntry->d_name);
+ snprintf(pathname, sizeof(pathname), "%s/%s", tblspcPath, direntry->d_name);
if (stat(pathname, &fst) < 0)
{
diff --git a/src/backend/utils/cache/relcache.c b/src/backend/utils/cache/relcache.c
index 6fe3b9b8219..6b9494bda90 100644
--- a/src/backend/utils/cache/relcache.c
+++ b/src/backend/utils/cache/relcache.c
@@ -5160,7 +5160,7 @@ RelationCacheInitFileRemove(void)
const char *tblspcdir = "pg_tblspc";
DIR *dir;
struct dirent *de;
- char path[MAXPGPATH];
+ char path[MAXPGPATH + 10 + sizeof(TABLESPACE_VERSION_DIRECTORY)];
/*
* We zap the shared cache file too. In theory it can't get out of sync
@@ -5202,7 +5202,7 @@ RelationCacheInitFileRemoveInDir(const char *tblspcpath)
{
DIR *dir;
struct dirent *de;
- char initfilename[MAXPGPATH];
+ char initfilename[MAXPGPATH * 2];
/* Scan the tablespace directory to find per-database directories */
dir = AllocateDir(tblspcpath);
diff --git a/src/backend/utils/error/elog.c b/src/backend/utils/error/elog.c
index de46945e685..47a3dffdcf5 100644
--- a/src/backend/utils/error/elog.c
+++ b/src/backend/utils/error/elog.c
@@ -2153,7 +2153,7 @@ setup_formatted_log_time(void)
{
struct timeval tv;
pg_time_t stamp_time;
- char msbuf[8];
+ char msbuf[13];
gettimeofday(&tv, NULL);
stamp_time = (pg_time_t) tv.tv_sec;
diff --git a/src/backend/utils/time/snapmgr.c b/src/backend/utils/time/snapmgr.c
index 674cce2f781..a70605b0375 100644
--- a/src/backend/utils/time/snapmgr.c
+++ b/src/backend/utils/time/snapmgr.c
@@ -1313,7 +1313,7 @@ XactHasExportedSnapshots(void)
void
DeleteAllExportedSnapshotFiles(void)
{
- char buf[MAXPGPATH];
+ char buf[MAXPGPATH + sizeof(SNAPSHOT_EXPORT_DIR)];
DIR *s_dir;
struct dirent *s_de;
@@ -1334,7 +1334,7 @@ DeleteAllExportedSnapshotFiles(void)
strcmp(s_de->d_name, "..") == 0)
continue;
- snprintf(buf, MAXPGPATH, SNAPSHOT_EXPORT_DIR "/%s", s_de->d_name);
+ snprintf(buf, sizeof(buf), SNAPSHOT_EXPORT_DIR "/%s", s_de->d_name);
/* Again, unlink failure is not worthy of FATAL */
if (unlink(buf))
elog(LOG, "could not unlink file \"%s\": %m", buf);
diff --git a/src/bin/initdb/initdb.c b/src/bin/initdb/initdb.c
index 034d54cabb4..6de22ba65e1 100644
--- a/src/bin/initdb/initdb.c
+++ b/src/bin/initdb/initdb.c
@@ -564,7 +564,7 @@ walkdir(const char *path,
while (errno = 0, (de = readdir(dir)) != NULL)
{
- char subpath[MAXPGPATH];
+ char subpath[MAXPGPATH * 2];
struct stat fst;
int sret;
@@ -572,7 +572,7 @@ walkdir(const char *path,
strcmp(de->d_name, "..") == 0)
continue;
- snprintf(subpath, MAXPGPATH, "%s/%s", path, de->d_name);
+ snprintf(subpath, sizeof(subpath), "%s/%s", path, de->d_name);
if (process_symlinks)
sret = stat(subpath, &fst);
diff --git a/src/bin/pg_basebackup/pg_receivexlog.c b/src/bin/pg_basebackup/pg_receivexlog.c
index 4afb8613c38..4880ec6377f 100644
--- a/src/bin/pg_basebackup/pg_receivexlog.c
+++ b/src/bin/pg_basebackup/pg_receivexlog.c
@@ -179,7 +179,7 @@ FindStreamingStart(uint32 *tli)
if (!ispartial)
{
struct stat statbuf;
- char fullpath[MAXPGPATH];
+ char fullpath[MAXPGPATH * 2];
snprintf(fullpath, sizeof(fullpath), "%s/%s", basedir, dirent->d_name);
if (stat(fullpath, &statbuf) != 0)
diff --git a/src/bin/pg_resetxlog/pg_resetxlog.c b/src/bin/pg_resetxlog/pg_resetxlog.c
index 1a0f350f994..ab1e13b9130 100644
--- a/src/bin/pg_resetxlog/pg_resetxlog.c
+++ b/src/bin/pg_resetxlog/pg_resetxlog.c
@@ -892,7 +892,7 @@ KillExistingXLOG(void)
{
DIR *xldir;
struct dirent *xlde;
- char path[MAXPGPATH];
+ char path[MAXPGPATH + sizeof(XLOGDIR)];
xldir = opendir(XLOGDIR);
if (xldir == NULL)
@@ -907,7 +907,7 @@ KillExistingXLOG(void)
if (strlen(xlde->d_name) == 24 &&
strspn(xlde->d_name, "0123456789ABCDEF") == 24)
{
- snprintf(path, MAXPGPATH, "%s/%s", XLOGDIR, xlde->d_name);
+ snprintf(path, sizeof(path), "%s/%s", XLOGDIR, xlde->d_name);
if (unlink(path) < 0)
{
fprintf(stderr, _("%s: could not delete file \"%s\": %s\n"),
@@ -939,11 +939,11 @@ KillExistingXLOG(void)
static void
KillExistingArchiveStatus(void)
{
+#define ARCHSTATDIR XLOGDIR "/archive_status"
+
DIR *xldir;
struct dirent *xlde;
- char path[MAXPGPATH];
-
-#define ARCHSTATDIR XLOGDIR "/archive_status"
+ char path[MAXPGPATH + sizeof(ARCHSTATDIR)];
xldir = opendir(ARCHSTATDIR);
if (xldir == NULL)
@@ -959,7 +959,7 @@ KillExistingArchiveStatus(void)
(strcmp(xlde->d_name + 24, ".ready") == 0 ||
strcmp(xlde->d_name + 24, ".done") == 0))
{
- snprintf(path, MAXPGPATH, "%s/%s", ARCHSTATDIR, xlde->d_name);
+ snprintf(path, sizeof(path), "%s/%s", ARCHSTATDIR, xlde->d_name);
if (unlink(path) < 0)
{
fprintf(stderr, _("%s: could not delete file \"%s\": %s\n"),
diff --git a/src/timezone/pgtz.c b/src/timezone/pgtz.c
index 73fecb381ba..6a7c9816d82 100644
--- a/src/timezone/pgtz.c
+++ b/src/timezone/pgtz.c
@@ -437,7 +437,7 @@ pg_tzenumerate_next(pg_tzenum *dir)
while (dir->depth >= 0)
{
struct dirent *direntry;
- char fullname[MAXPGPATH];
+ char fullname[MAXPGPATH * 2];
struct stat statbuf;
direntry = ReadDir(dir->dirdesc[dir->depth], dir->dirname[dir->depth]);
@@ -454,7 +454,7 @@ pg_tzenumerate_next(pg_tzenum *dir)
if (direntry->d_name[0] == '.')
continue;
- snprintf(fullname, MAXPGPATH, "%s/%s",
+ snprintf(fullname, sizeof(fullname), "%s/%s",
dir->dirname[dir->depth], direntry->d_name);
if (stat(fullname, &statbuf) != 0)
ereport(ERROR,