diff options
Diffstat (limited to 'src/backend')
-rw-r--r-- | src/backend/replication/basebackup.c | 3 | ||||
-rw-r--r-- | src/backend/storage/file/fd.c | 9 | ||||
-rw-r--r-- | src/backend/utils/adt/misc.c | 8 |
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'; |