service-libpq-crlf-v1.patch
text/x-diff
Filename: service-libpq-crlf-v1.patch
Type: text/x-diff
Part: 0
Patch
Format: unified
Series: patch v1
| File | + | − |
|---|---|---|
| src/interfaces/libpq/fe-connect.c | 12 | 3 |
diff --git a/src/interfaces/libpq/fe-connect.c b/src/interfaces/libpq/fe-connect.c
index c800d7921e..4e6902daef 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,23 @@ parseServiceFile(const char *serviceFile,
return 2;
}
+ len = strlen(line);
+
/* ignore EOL at end of line */
- if (strlen(line) && line[strlen(line) - 1] == '\n')
- line[strlen(line) - 1] = 0;
+ if (len > 0 && line[len - 1] == '\n')
+ {
+ line[--len] = '\0';
+ /* Handle DOS-style line endings, too, even when not on Windows */
+ if (len > 0 && 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 (len == 0 || line[0] == '#')
continue;
/* Check for right groupname */