aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/backend/libpq/be-secure-common.c5
-rw-r--r--src/interfaces/libpq/fe-connect.c12
2 files changed, 11 insertions, 6 deletions
diff --git a/src/backend/libpq/be-secure-common.c b/src/backend/libpq/be-secure-common.c
index 877226d3776..4abbef5bf19 100644
--- a/src/backend/libpq/be-secure-common.c
+++ b/src/backend/libpq/be-secure-common.c
@@ -112,9 +112,10 @@ run_ssl_passphrase_command(const char *prompt, bool is_server_start, char *buf,
goto error;
}
- /* strip trailing newline */
+ /* strip trailing newline, including \r in case we're on Windows */
len = strlen(buf);
- if (len > 0 && buf[len - 1] == '\n')
+ while (len > 0 && (buf[len - 1] == '\n' ||
+ buf[len - 1] == '\r'))
buf[--len] = '\0';
error:
diff --git a/src/interfaces/libpq/fe-connect.c b/src/interfaces/libpq/fe-connect.c
index c800d7921e3..7a4c7825547 100644
--- a/src/interfaces/libpq/fe-connect.c
+++ b/src/interfaces/libpq/fe-connect.c
@@ -5020,6 +5020,8 @@ parseServiceFile(const char *serviceFile,
while ((line = fgets(buf, sizeof(buf), f)) != NULL)
{
+ int len;
+
linenr++;
if (strlen(line) >= sizeof(buf) - 1)
@@ -5032,16 +5034,18 @@ parseServiceFile(const char *serviceFile,
return 2;
}
- /* ignore EOL at end of line */
- if (strlen(line) && line[strlen(line) - 1] == '\n')
- line[strlen(line) - 1] = 0;
+ /* ignore EOL at end of line, including \r in case it's a DOS file */
+ len = strlen(line);
+ while (len > 0 && (line[len - 1] == '\n' ||
+ line[len - 1] == '\r'))
+ line[--len] = '\0';
/* ignore leading blanks */
while (*line && isspace((unsigned char) line[0]))
line++;
/* ignore comments and empty lines */
- if (strlen(line) == 0 || line[0] == '#')
+ if (line[0] == '\0' || line[0] == '#')
continue;
/* Check for right groupname */