From 190af08cf37d9e3ef84ed9e65660d702e2082d70 Mon Sep 17 00:00:00 2001 From: wiz Date: Mon, 24 Sep 2001 13:22:25 +0000 Subject: va_{start,end} audit: Make sure that each va_start has one and only one matching va_end, especially in error cases. If the va_list is used multiple times, do multiple va_starts/va_ends. If a function gets va_list as argument, don't let it use va_end (since it's the callers responsibility). Improved by comments from enami and christos -- thanks! Heimdal/krb4/KAME changes already fed back, rest to follow. Inspired by, but not not based on, OpenBSD. --- larn/io.c | 5 +++-- sail/pl_7.c | 8 ++++---- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/larn/io.c b/larn/io.c index b9f963fa..c7233271 100644 --- a/larn/io.c +++ b/larn/io.c @@ -1,4 +1,4 @@ -/* $NetBSD: io.c,v 1.11 2001/02/05 00:57:33 christos Exp $ */ +/* $NetBSD: io.c,v 1.12 2001/09/24 13:22:29 wiz Exp $ */ /* * io.c Larn is copyrighted 1986 by Noah Morgan. @@ -62,7 +62,7 @@ */ #include #ifndef lint -__RCSID("$NetBSD: io.c,v 1.11 2001/02/05 00:57:33 christos Exp $"); +__RCSID("$NetBSD: io.c,v 1.12 2001/09/24 13:22:29 wiz Exp $"); #endif /* not lint */ #include "header.h" @@ -278,6 +278,7 @@ va_dcl *outb++ = *fmt++; else { lpnt = outb; + va_end(ap); return; } wide = 0; diff --git a/sail/pl_7.c b/sail/pl_7.c index 1660761f..c752a52b 100644 --- a/sail/pl_7.c +++ b/sail/pl_7.c @@ -1,4 +1,4 @@ -/* $NetBSD: pl_7.c,v 1.24 2001/02/05 01:10:11 christos Exp $ */ +/* $NetBSD: pl_7.c,v 1.25 2001/09/24 13:22:29 wiz Exp $ */ /* * Copyright (c) 1983, 1993 @@ -38,7 +38,7 @@ #if 0 static char sccsid[] = "@(#)pl_7.c 8.1 (Berkeley) 5/31/93"; #else -__RCSID("$NetBSD: pl_7.c,v 1.24 2001/02/05 01:10:11 christos Exp $"); +__RCSID("$NetBSD: pl_7.c,v 1.25 2001/09/24 13:22:29 wiz Exp $"); #endif #endif /* not lint */ @@ -178,9 +178,9 @@ Signal(const char *fmt, struct ship *ship, ...) va_list ap; char format[BUFSIZ]; - va_start(ap, ship); if (!done_curses) return; + va_start(ap, ship); if (*fmt == '\7') putchar(*fmt++); fmtship(format, sizeof(format), fmt, ship); @@ -195,9 +195,9 @@ Msg(const char *fmt, ...) { va_list ap; - va_start(ap, fmt); if (!done_curses) return; + va_start(ap, fmt); if (*fmt == '\7') putchar(*fmt++); vwprintw(scroll_w, fmt, ap); -- cgit v1.2.3