Index | Thread | Search

From:
Theo Buehler <tb@theobuehler.org>
Subject:
Re: bgpd: use unsigned int instead of uint8_t as loop iterator var
To:
tech@openbsd.org
Date:
Thu, 7 May 2026 23:04:49 +0200

Download raw body.

Thread
On Thu, May 07, 2026 at 09:11:28PM +0200, Claudio Jeker wrote:
> I like to move away from using size restricted variables for loop indexes
> and length variables.
> 
> Too often the limited range cause overflows in unexpeced ways. It is
> better to use a default int type instead.
> 
> This converts the uint8_t length vars for iterating over the others
> attribute array to unsigned int. I also added early breaks in the loop in
> two places since after the first NULL all values will be NULL as well.

Small follow-up: when grepping for u_int, I spotted a few u_int8_t
because I can't grep properly. So let's fix those.

By the rationale for this diff, one of them should be a u_int because
it's used in a for loop and there's another one in the vicinity (first
two hunks).

There are probably more for loops with uint8_t for aid in bgpd.

Index: parse.y
===================================================================
RCS file: /cvs/src/usr.sbin/bgpd/parse.y,v
diff -u -p -r1.489 parse.y
--- parse.y	7 May 2026 18:55:05 -0000	1.489
+++ parse.y	7 May 2026 21:01:23 -0000
@@ -1989,7 +1989,7 @@ peeropts	: REMOTEAS as4number	{
 		}
 		| ANNOUNCE ADDPATH RECV yesnoenforce {
 			int8_t *ap = curpeer->conf.capabilities.add_path;
-			uint8_t i;
+			u_int i;
 
 			for (i = AID_MIN; i < AID_MAX; i++) {
 				if ($4) {
@@ -2003,7 +2003,7 @@ peeropts	: REMOTEAS as4number	{
 		| ANNOUNCE ADDPATH SEND STRING addpathextra addpathmax enforce {
 			int8_t *ap = curpeer->conf.capabilities.add_path;
 			enum addpath_mode mode;
-			u_int8_t i;
+			u_int i;
 
 			if (!strcmp($4, "no")) {
 				free($4);
@@ -5914,13 +5914,13 @@ push_binary_numop(enum comp_ops op, long
 
 struct icmptypeent {
 	const char *name;
-	u_int8_t type;
+	uint8_t type;
 };
 
 struct icmpcodeent {
 	const char *name;
-	u_int8_t type;
-	u_int8_t code;
+	uint8_t type;
+	uint8_t code;
 };
 
 static const struct icmptypeent icmp_type[] = {