On Wed, Nov 03, 2021 at 06:34:05PM +0100, Claudio Jeker wrote:
> Fix CRLF handling by properly setting nl to the right NUL byte.
> In the CRLF case both \r\n are replaced by \0 and so the code
> needs to adjust the nl pointer else valid_url() and the check for .cer
> endings fail.
It feels odd to interrupt CRLF handling by advancing the buffer to the
next line.
How about this?
Index: tal.c
===================================================================
RCS file: /cvs/src/usr.sbin/rpki-client/tal.c,v
retrieving revision 1.32
diff -u -p -r1.32 tal.c
--- tal.c 26 Oct 2021 16:12:54 -0000 1.32
+++ tal.c 3 Nov 2021 17:47:40 -0000
@@ -58,14 +58,16 @@ tal_parse_buffer(const char *fn, char *b
while ((nl = memchr(buf, '\n', len)) != NULL) {
line = buf;
- /* replace LF and optional CR with NUL */
- *nl = '\0';
- if (nl > line && nl[-1] == '\r')
- nl[-1] = '\0';
-
/* advance buffer to next line */
len -= nl + 1 - buf;
buf = nl + 1;
+
+ /* replace LF and optional CR with NUL, point nl at first NUL */
+ *nl = '\0';
+ if (nl > line && nl[-1] == '\r') {
+ nl[-1] = '\0';
+ nl--;
+ }
if (optcomment) {
/* if this is a comment, just eat the line */