diff options
author | Kevin Lo <kevlo@FreeBSD.org> | 2012-05-29 01:48:06 +0000 |
---|---|---|
committer | Kevin Lo <kevlo@FreeBSD.org> | 2012-05-29 01:48:06 +0000 |
commit | 544c5e5b533574625e9921209ee3ceb1ee3d22d0 (patch) | |
tree | ab9b314dc9e2edd5a771820aeac2cbe20228150c | |
parent | bebda077b136c9c051f070dc6ad0704f85025322 (diff) | |
download | src-544c5e5b533574625e9921209ee3ceb1ee3d22d0.tar.gz src-544c5e5b533574625e9921209ee3ceb1ee3d22d0.zip |
Make sure that each va_start has one and only one matching va_end,
especially in error cases.
Notes
Notes:
svn path=/head/; revision=236213
-rw-r--r-- | sbin/fsck_msdosfs/main.c | 1 | ||||
-rw-r--r-- | sbin/restore/utilities.c | 1 | ||||
-rw-r--r-- | sys/boot/i386/libi386/biospnp.c | 1 | ||||
-rw-r--r-- | sys/compat/ndis/subr_ntoskrnl.c | 1 | ||||
-rw-r--r-- | sys/i386/i386/bios.c | 4 | ||||
-rw-r--r-- | usr.bin/chat/chat.c | 2 | ||||
-rw-r--r-- | usr.sbin/pkg_install/lib/exec.c | 2 | ||||
-rw-r--r-- | usr.sbin/pkg_install/lib/msg.c | 1 |
8 files changed, 13 insertions, 0 deletions
diff --git a/sbin/fsck_msdosfs/main.c b/sbin/fsck_msdosfs/main.c index 9ec15ca2b500..e9baf84b626b 100644 --- a/sbin/fsck_msdosfs/main.c +++ b/sbin/fsck_msdosfs/main.c @@ -138,6 +138,7 @@ ask(int def, const char *fmt, ...) va_start(ap, fmt); vsnprintf(prompt, sizeof(prompt), fmt, ap); + va_end(ap); if (alwaysyes || rdonly) { printf("%s? %s\n", prompt, rdonly ? "no" : "yes"); return !rdonly; diff --git a/sbin/restore/utilities.c b/sbin/restore/utilities.c index 6b984e409749..89c2b09298c9 100644 --- a/sbin/restore/utilities.c +++ b/sbin/restore/utilities.c @@ -411,6 +411,7 @@ panic(const char *fmt, ...) va_list ap; va_start(ap, fmt); vfprintf(stderr, fmt, ap); + va_end(ap); if (yflag) return; if (reply("abort") == GOOD) { diff --git a/sys/boot/i386/libi386/biospnp.c b/sys/boot/i386/libi386/biospnp.c index 8573e8541213..30e55fc893d0 100644 --- a/sys/boot/i386/libi386/biospnp.c +++ b/sys/boot/i386/libi386/biospnp.c @@ -276,6 +276,7 @@ biospnp_call(int func, const char *fmt, ...) break; } } + va_end(ap); /* BIOS segment last */ *(u_int16_t *)argp = pnp_Icheck->pnp_rmds; diff --git a/sys/compat/ndis/subr_ntoskrnl.c b/sys/compat/ndis/subr_ntoskrnl.c index 863e35e02f1f..02e8e45b173a 100644 --- a/sys/compat/ndis/subr_ntoskrnl.c +++ b/sys/compat/ndis/subr_ntoskrnl.c @@ -3591,6 +3591,7 @@ DbgPrint(char *fmt, ...) if (bootverbose) { va_start(ap, fmt); vprintf(fmt, ap); + va_end(ap); } return (STATUS_SUCCESS); diff --git a/sys/i386/i386/bios.c b/sys/i386/i386/bios.c index a6d09785337e..ffe42bae8d77 100644 --- a/sys/i386/i386/bios.c +++ b/sys/i386/i386/bios.c @@ -372,9 +372,11 @@ bios16(struct bios_args *args, char *fmt, ...) break; default: + va_end(ap); return (EINVAL); } } + va_end(ap); if (flags & BIOSARGS_FLAG) { if (arg_end - arg_start > ctob(16)) @@ -448,9 +450,11 @@ bios16(struct bios_args *args, char *fmt, ...) break; default: + va_end(ap); return (EINVAL); } } + va_end(ap); set_bios_selectors(&args->seg, flags); bioscall_vector.vec16.offset = (u_short)args->entry; diff --git a/usr.bin/chat/chat.c b/usr.bin/chat/chat.c index 056af3749f9d..86e6cfb3237f 100644 --- a/usr.bin/chat/chat.c +++ b/usr.bin/chat/chat.c @@ -408,6 +408,7 @@ chat_logf(const char *fmt, ...) va_start(args, fmt); vfmtmsg(line, sizeof(line), fmt, args); + va_end(args); if (to_log) syslog(LOG_INFO, "%s", line); if (to_stderr) @@ -425,6 +426,7 @@ fatal(int code, const char *fmt, ...) va_start(args, fmt); vfmtmsg(line, sizeof(line), fmt, args); + va_end(args); if (to_log) syslog(LOG_ERR, "%s", line); if (to_stderr) diff --git a/usr.sbin/pkg_install/lib/exec.c b/usr.sbin/pkg_install/lib/exec.c index 364737633c99..c95ac47fa9dc 100644 --- a/usr.sbin/pkg_install/lib/exec.c +++ b/usr.sbin/pkg_install/lib/exec.c @@ -47,6 +47,7 @@ vsystem(const char *fmt, ...) va_start(args, fmt); if (vsnprintf(cmd, maxargs, fmt, args) > maxargs) { warnx("vsystem args are too long"); + va_end(args); return 1; } #ifdef DEBUG @@ -82,6 +83,7 @@ vpipe(const char *fmt, ...) va_start(args, fmt); if (vsnprintf(cmd, maxargs, fmt, args) > maxargs) { warnx("vsystem args are too long"); + va_end(args); return NULL; } #ifdef DEBUG diff --git a/usr.sbin/pkg_install/lib/msg.c b/usr.sbin/pkg_install/lib/msg.c index 2b0ee07f1cd4..57c84d321aff 100644 --- a/usr.sbin/pkg_install/lib/msg.c +++ b/usr.sbin/pkg_install/lib/msg.c @@ -71,5 +71,6 @@ y_or_n(Boolean def, const char *msg, ...) ch = (def) ? 'Y' : 'N'; } fclose(tty) ; + va_end(args); return (ch == 'Y') ? TRUE : FALSE; } |