Hi tech@,

I know that acme-client is unveiled properly, but isn't it better to
check token names?

===================================================================
RCS file: /cvs/src/usr.sbin/acme-client/chngproc.c,v
retrieving revision 1.16
diff -u -p -r1.16 chngproc.c
--- chngproc.c  12 Jul 2021 15:09:20 -0000      1.16
+++ chngproc.c  1 May 2022 22:28:43 -0000
@@ -77,6 +77,11 @@ chngproc(int netsock, const char *root)
                        goto out;
                else if ((tok = readstr(netsock, COMM_TOK)) == NULL)
                        goto out;
+               else if (strstr(tok, "../") == tok ||
+                   strstr(tok, "/../") != NULL) {
+                       warnx("bad file path");
+                       goto out;
+               }
 
                if (asprintf(&fmt, "%s.%s", tok, th) == -1) {
                        warn("asprintf");

Reply via email to