Better to make sure that all URI we ingest are sensitive. Similar check is already done in cert.c so also do it for the TAL files (even though these are normally controled by the user).
OK? -- :wq Claudio Index: tal.c =================================================================== RCS file: /cvs/src/usr.sbin/rpki-client/tal.c,v retrieving revision 1.26 diff -u -p -r1.26 tal.c --- tal.c 8 Jan 2021 08:09:07 -0000 1.26 +++ tal.c 19 Feb 2021 09:21:18 -0000 @@ -82,6 +82,7 @@ tal_parse_buffer(const char *fn, char *b char *nl, *line, *f, *file = NULL; unsigned char *der; size_t sz, dersz; + ssize_t i; int rc = 0; struct tal *tal = NULL; EVP_PKEY *pkey = NULL; @@ -101,6 +102,13 @@ tal_parse_buffer(const char *fn, char *b if (*line == '\0') break; + /* make sure only US-ASCII chars are in the URL */ + for (i = 0; i < nl - line; i++) { + if (isalnum(line[i]) || ispunct(line[i])) + continue; + warnx("%s: invalid URI", fn); + goto out; + } /* Check that the URI is sensible */ if (!(strncasecmp(line, "https://", 8) == 0 || strncasecmp(line, "rsync://", 8) == 0)) {