From: Magnus Hagander Date: Fri, 18 May 2018 15:53:19 +0000 (+0200) Subject: Fix error message on short read of pg_control X-Git-Tag: REL9_4_19~60 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=b5f096d50bee5c20023ed05390fdc52aa44a1404;p=thirdparty%2Fpostgresql.git Fix error message on short read of pg_control Instead of saying "error: success", indicate that we got a working read but it was too short. --- diff --git a/src/backend/access/transam/xlog.c b/src/backend/access/transam/xlog.c index 1517f78aec5..bf51a697f7d 100644 --- a/src/backend/access/transam/xlog.c +++ b/src/backend/access/transam/xlog.c @@ -4471,6 +4471,7 @@ ReadControlFile(void) { pg_crc32 crc; int fd; + int r; /* * Read data... @@ -4484,10 +4485,17 @@ ReadControlFile(void) errmsg("could not open control file \"%s\": %m", XLOG_CONTROL_FILE))); - if (read(fd, ControlFile, sizeof(ControlFileData)) != sizeof(ControlFileData)) - ereport(PANIC, - (errcode_for_file_access(), - errmsg("could not read from control file: %m"))); + r = read(fd, ControlFile, sizeof(ControlFileData)); + if (r != sizeof(ControlFileData)) + { + if (r < 0) + ereport(PANIC, + (errcode_for_file_access(), + errmsg("could not read from control file: %m"))); + else + ereport(PANIC, + (errmsg("could not read from control file: read %d bytes, expected %d", r, (int) sizeof(ControlFileData)))); + } close(fd);