Index | Thread | Search

From:
Claudio Jeker <cjeker@diehard.n-r-g.com>
Subject:
bgpd: stop msgbuf abuse, just use msgbuf_init
To:
tech@openbsd.org
Date:
Tue, 20 Aug 2024 16:18:09 +0200

Download raw body.

Thread
Use msgbuf_init() instead of hand initalizing the msgbuf.

-- 
:wq Claudio

Index: rde.c
===================================================================
RCS file: /cvs/src/usr.sbin/bgpd/rde.c,v
diff -u -p -r1.627 rde.c
--- rde.c	20 Aug 2024 11:59:39 -0000	1.627
+++ rde.c	20 Aug 2024 14:10:48 -0000
@@ -3195,7 +3195,7 @@ rde_dump_mrt_new(struct mrt *mrt, pid_t 
 		return;
 	}
 	memcpy(&ctx->mrt, mrt, sizeof(struct mrt));
-	TAILQ_INIT(&ctx->mrt.wbuf.bufs);
+	msgbuf_init(&ctx->mrt.wbuf);
 	ctx->mrt.wbuf.fd = fd;
 	ctx->mrt.state = MRT_STATE_RUNNING;
 	rid = rib_find(ctx->mrt.rib);
Index: session.c
===================================================================
RCS file: /cvs/src/usr.sbin/bgpd/session.c,v
diff -u -p -r1.481 session.c
--- session.c	20 Aug 2024 11:59:39 -0000	1.481
+++ session.c	20 Aug 2024 14:10:48 -0000
@@ -3159,13 +3159,13 @@ session_dispatch_imsg(struct imsgbuf *im
 				if (mrt == NULL)
 					fatal("session_dispatch_imsg");
 				memcpy(mrt, &xmrt, sizeof(struct mrt));
-				TAILQ_INIT(&mrt->wbuf.bufs);
+				msgbuf_init(&mrt->wbuf);
 				LIST_INSERT_HEAD(&mrthead, mrt, entry);
 			} else {
 				/* old dump reopened */
 				close(mrt->wbuf.fd);
-				mrt->wbuf.fd = xmrt.wbuf.fd;
 			}
+			mrt->wbuf.fd = xmrt.wbuf.fd;
 			break;
 		case IMSG_MRT_CLOSE:
 			if (idx != PFD_PIPE_MAIN)