aboutsummaryrefslogtreecommitdiff
path: root/src/backend
diff options
context:
space:
mode:
Diffstat (limited to 'src/backend')
-rw-r--r--src/backend/replication/basebackup.c3
-rw-r--r--src/backend/storage/file/fd.c9
-rw-r--r--src/backend/utils/adt/misc.c8
3 files changed, 11 insertions, 9 deletions
diff --git a/src/backend/replication/basebackup.c b/src/backend/replication/basebackup.c
index fa29624667e..1e86e4c57b6 100644
--- a/src/backend/replication/basebackup.c
+++ b/src/backend/replication/basebackup.c
@@ -1028,7 +1028,8 @@ sendDir(char *path, int basepathlen, bool sizeonly, List *tablespaces,
pathbuf)));
if (rllen >= sizeof(linkpath))
ereport(ERROR,
- (errmsg("symbolic link \"%s\" target is too long",
+ (errcode(ERRCODE_PROGRAM_LIMIT_EXCEEDED),
+ errmsg("symbolic link \"%s\" target is too long",
pathbuf)));
linkpath[rllen] = '\0';
diff --git a/src/backend/storage/file/fd.c b/src/backend/storage/file/fd.c
index 68d43c66b6f..78aade98d1d 100644
--- a/src/backend/storage/file/fd.c
+++ b/src/backend/storage/file/fd.c
@@ -2517,18 +2517,17 @@ walkdir(char *path, void (*action) (char *fname, bool isdir))
int len;
struct stat lst;
- len = readlink(subpath, linkpath, sizeof(linkpath) - 1);
+ len = readlink(subpath, linkpath, sizeof(linkpath));
if (len < 0)
ereport(ERROR,
(errcode_for_file_access(),
errmsg("could not read symbolic link \"%s\": %m",
subpath)));
-
- if (len >= sizeof(linkpath) - 1)
+ if (len >= sizeof(linkpath))
ereport(ERROR,
- (errmsg("symbolic link \"%s\" target is too long",
+ (errcode(ERRCODE_PROGRAM_LIMIT_EXCEEDED),
+ errmsg("symbolic link \"%s\" target is too long",
subpath)));
-
linkpath[len] = '\0';
if (lstat(linkpath, &lst) == 0)
diff --git a/src/backend/utils/adt/misc.c b/src/backend/utils/adt/misc.c
index de68cdddf1d..c0495d955ce 100644
--- a/src/backend/utils/adt/misc.c
+++ b/src/backend/utils/adt/misc.c
@@ -374,11 +374,13 @@ pg_tablespace_location(PG_FUNCTION_ARGS)
rllen = readlink(sourcepath, targetpath, sizeof(targetpath));
if (rllen < 0)
ereport(ERROR,
- (errmsg("could not read symbolic link \"%s\": %m",
+ (errcode_for_file_access(),
+ errmsg("could not read symbolic link \"%s\": %m",
sourcepath)));
- else if (rllen >= sizeof(targetpath))
+ if (rllen >= sizeof(targetpath))
ereport(ERROR,
- (errmsg("symbolic link \"%s\" target is too long",
+ (errcode(ERRCODE_PROGRAM_LIMIT_EXCEEDED),
+ errmsg("symbolic link \"%s\" target is too long",
sourcepath)));
targetpath[rllen] = '\0';