tcp_wrappers/tcp_wrappers-7.6-xgets.patch

50 lines
1.0 KiB
Diff
Raw Normal View History

commit 3ae65dc9a1c78c3088a08091f5d948fbbb8929af
Author: Jakub Jelen <jjelen@redhat.com>
Date: Tue Feb 23 17:28:15 2016 +0100
tcp_wrappers-7.6-xgets.patch
diff --git a/misc.c b/misc.c
index b248a5d..204546c 100644
--- a/misc.c
+++ b/misc.c
@@ -35,20 +35,32 @@ FILE *fp;
{
2011-08-15 09:58:45 +00:00
int got;
char *start = ptr;
+ int c, last;
2011-08-15 09:58:45 +00:00
- while (fgets(ptr, len, fp)) {
+ while (len && fgets(ptr, len, fp)) {
got = strlen(ptr);
if (got >= 1 && ptr[got - 1] == '\n') {
tcpd_context.line++;
if (got >= 2 && ptr[got - 2] == '\\') {
- got -= 2;
+ got -= 2;
} else {
- return (start);
+ return (start);
}
+ ptr += got;
+ len -= got;
+ ptr[0] = 0;
+ } else {
+ /* over buffer len */
+ last = (got >= 1) ? ptr[got - 1] : '\0';
+ while ((c = fgetc(fp)) != EOF) {
+ if (c == '\n') {
+ tcpd_context.line++;
+ if (last != '\\')
+ return (start);
+ }
+ last = c;
+ }
}
- ptr += got;
- len -= got;
- ptr[0] = 0;
}
return (ptr > start ? start : 0);
}