--- a/sys/netgraph/netgraph/ng_parse.c 2026-06-29 12:51:19.000000000 +0000 +++ b/sys/netgraph/netgraph/ng_parse.c 2026-10-10 14:50:03.426033369 +0000 @@ -1569,7 +1569,9 @@ int x, k; char *v; - strcpy(p, p + 1); + /* DF-5718: src and dst overlap - strcpy violates the + * restrict contract; use the overlap-safe memmove. */ + memmove(p, p + 1, strlen(p + 1) + 1); v = p; switch (*p) { case 't': @@ -1618,7 +1620,8 @@ default: continue; } - strcpy(p, v); + /* DF-5718: overlap-safe memmove (see above). */ + memmove(p, v, strlen(v) + 1); } } return (NULL); /* no closing quote */ --- a/sys/netgraph7/netgraph/ng_parse.c 2026-07-16 12:08:30.390805146 +0000 +++ b/sys/netgraph7/netgraph/ng_parse.c 2026-10-10 14:50:03.438033215 +0000 @@ -1761,7 +1761,9 @@ int x, k; char *v; - strcpy(p, p + 1); + /* DF-5718: src and dst overlap - strcpy violates the + * restrict contract; use the overlap-safe memmove. */ + memmove(p, p + 1, strlen(p + 1) + 1); v = p; switch (*p) { case 't': @@ -1810,7 +1812,8 @@ default: continue; } - strcpy(p, v); + /* DF-5718: overlap-safe memmove (see above). */ + memmove(p, v, strlen(v) + 1); } } kfree(cbuf, M_NETGRAPH_PARSE);