aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobert Haas <rhaas@postgresql.org>2022-12-12 10:17:02 -0500
committerRobert Haas <rhaas@postgresql.org>2022-12-12 10:33:02 -0500
commit8b5ba2f3f40a9c82623a19b551bc5790a84275a2 (patch)
tree7b9021e5ab482ca375e86eaab05bbc0a8fe7a67f
parent04788ee4c5efcfbf026b968a064fcdd74fcba154 (diff)
downloadpostgresql-8b5ba2f3f40a9c82623a19b551bc5790a84275a2.tar.gz
postgresql-8b5ba2f3f40a9c82623a19b551bc5790a84275a2.zip
Fix failure to advance content pointer in sendFileWithContent.
If sendFileWithContent were used to send a file larger than the bbsink buffer size, this would result in corruption. The only files that are sent via sendFileWithContent are the backup label file, the tablespace map file, and .done files for WAL segments included in the backup. Of these, it seems that only the tablespace_map file can become large enough to cause a problem, and then only if you have a lot of tablespaces. If you do have that situation, you might end up with a corrupted tablespace_map file, which would be bad. My commit bef47ff85df18bf4a3a9b13bd2a54820e27f3614 introduced this problem. Report and patch by Antonin Houska. Discussion: http://postgr.es/m/15764.1670528645@antos
-rw-r--r--src/backend/backup/basebackup.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/src/backend/backup/basebackup.c b/src/backend/backup/basebackup.c
index 759823f1bed..3ffd2f4c122 100644
--- a/src/backend/backup/basebackup.c
+++ b/src/backend/backup/basebackup.c
@@ -1057,6 +1057,7 @@ sendFileWithContent(bbsink *sink, const char *filename, const char *content,
memcpy(sink->bbs_buffer, content, nbytes);
bbsink_archive_contents(sink, nbytes);
bytes_done += nbytes;
+ content += nbytes;
}
_tarWritePadding(sink, len);