git: a6a98453d8c9 - main - pf: Don't convert arc4random() to host byte order

From: Kristof Provost <kp_at_FreeBSD.org>
Date: Wed, 16 Apr 2025 18:02:51 UTC
The branch main has been updated by kp:

URL: https://cgit.FreeBSD.org/src/commit/?id=a6a98453d8c9169a0859c48e2893df3f6ffe84cf

commit a6a98453d8c9169a0859c48e2893df3f6ffe84cf
Author:     Kristof Provost <kp@FreeBSD.org>
AuthorDate: 2025-04-15 15:29:17 +0000
Commit:     Kristof Provost <kp@FreeBSD.org>
CommitDate: 2025-04-16 14:23:47 +0000

    pf: Don't convert arc4random() to host byte order
    
    There's no need to convert values returned by arc4random to the network
    byte order.  Spotted by Gleb Smirnoff (glebius@FreeBSD.org), thanks!
    
    ok tedu
    
    Obtained from:  OpenBSD, mikeb <mikeb@openbsd.org>, 367b0410d3
    Sponsored by:   Rubicon Communications, LLC ("Netgate")
---
 sys/netpfil/pf/pf.c      |  4 ++--
 sys/netpfil/pf/pf_lb.c   | 10 +++++-----
 sys/netpfil/pf/pf_norm.c |  2 +-
 3 files changed, 8 insertions(+), 8 deletions(-)

diff --git a/sys/netpfil/pf/pf.c b/sys/netpfil/pf/pf.c
index d4288ba34eb4..b6525b229c48 100644
--- a/sys/netpfil/pf/pf.c
+++ b/sys/netpfil/pf/pf.c
@@ -6257,7 +6257,7 @@ pf_create_state(struct pf_krule *r, struct pf_krule *nr, struct pf_krule *a,
 	    TH_SYN && r->keep_state == PF_STATE_SYNPROXY) {
 		pf_set_protostate(s, PF_PEER_SRC, PF_TCPS_PROXY_SRC);
 		pf_undo_nat(nr, pd, bip_sum);
-		s->src.seqhi = htonl(arc4random());
+		s->src.seqhi = arc4random();
 		/* Find mss option */
 		int rtid = M_GETFIB(pd->m);
 		mss = pf_get_mss(pd);
@@ -6869,7 +6869,7 @@ pf_synproxy(struct pf_pdesc *pd, struct pf_kstate *state, u_short *reason)
 			}
 			state->src.max_win = MAX(ntohs(th->th_win), 1);
 			if (state->dst.seqhi == 1)
-				state->dst.seqhi = htonl(arc4random());
+				state->dst.seqhi = arc4random();
 			pf_send_tcp(state->rule, pd->af,
 			    &sk->addr[pd->sidx], &sk->addr[pd->didx],
 			    sk->port[pd->sidx], sk->port[pd->didx],
diff --git a/sys/netpfil/pf/pf_lb.c b/sys/netpfil/pf/pf_lb.c
index 54a9463e34ef..9785611271a0 100644
--- a/sys/netpfil/pf/pf_lb.c
+++ b/sys/netpfil/pf/pf_lb.c
@@ -551,29 +551,29 @@ pf_map_addr(sa_family_t af, struct pf_krule *r, struct pf_addr *saddr,
 			switch (af) {
 #ifdef INET
 			case AF_INET:
-				rpool->counter.addr32[0] = htonl(arc4random());
+				rpool->counter.addr32[0] = arc4random();
 				break;
 #endif /* INET */
 #ifdef INET6
 			case AF_INET6:
 				if (rmask->addr32[3] != 0xffffffff)
 					rpool->counter.addr32[3] =
-					    htonl(arc4random());
+					    arc4random();
 				else
 					break;
 				if (rmask->addr32[2] != 0xffffffff)
 					rpool->counter.addr32[2] =
-					    htonl(arc4random());
+					    arc4random();
 				else
 					break;
 				if (rmask->addr32[1] != 0xffffffff)
 					rpool->counter.addr32[1] =
-					    htonl(arc4random());
+					    arc4random();
 				else
 					break;
 				if (rmask->addr32[0] != 0xffffffff)
 					rpool->counter.addr32[0] =
-					    htonl(arc4random());
+					    arc4random();
 				break;
 #endif /* INET6 */
 			}
diff --git a/sys/netpfil/pf/pf_norm.c b/sys/netpfil/pf/pf_norm.c
index 2dc4553bd4f4..1bf672f39204 100644
--- a/sys/netpfil/pf/pf_norm.c
+++ b/sys/netpfil/pf/pf_norm.c
@@ -1493,7 +1493,7 @@ pf_normalize_tcp_init(struct pf_pdesc *pd, struct tcphdr *th,
 					src->scrub->pfss_flags |=
 					    PFSS_TIMESTAMP;
 					src->scrub->pfss_ts_mod =
-					    htonl(arc4random());
+					    arc4random();
 
 					/* note PFSS_PAWS not set yet */
 					memcpy(&tsval, &opt[2],