Author: kevlo
Date: Fri Sep 28 07:51:30 2012
New Revision: 241021
URL: http://svn.freebsd.org/changeset/base/241021

Log:
  Make sure that each va_start has one and only one matching va_end,
  especially in error cases.

Modified:
  head/cddl/contrib/opensolaris/lib/libdtrace/common/dt_subr.c
  head/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_util.c
  head/contrib/telnet/telnetd/state.c
  head/usr.bin/csup/proto.c
  head/usr.sbin/pkg_install/lib/exec.c
  head/usr.sbin/pw/pwupd.c

Modified: head/cddl/contrib/opensolaris/lib/libdtrace/common/dt_subr.c
==============================================================================
--- head/cddl/contrib/opensolaris/lib/libdtrace/common/dt_subr.c        Fri Sep 
28 05:30:59 2012        (r241020)
+++ head/cddl/contrib/opensolaris/lib/libdtrace/common/dt_subr.c        Fri Sep 
28 07:51:30 2012        (r241021)
@@ -678,6 +678,7 @@ dt_printf(dtrace_hdl_t *dtp, FILE *fp, c
 
                dtp->dt_buffered_offs += needed;
                assert(dtp->dt_buffered_buf[dtp->dt_buffered_offs] == '\0');
+               va_end(ap);
                return (0);
        }
 

Modified: head/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_util.c
==============================================================================
--- head/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_util.c       Fri Sep 
28 05:30:59 2012        (r241020)
+++ head/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_util.c       Fri Sep 
28 07:51:30 2012        (r241021)
@@ -368,6 +368,7 @@ zfs_standard_error_fmt(libzfs_handle_t *
        case ENOSPC:
        case EDQUOT:
                zfs_verror(hdl, EZFS_NOSPC, fmt, ap);
+               va_end(ap);
                return (-1);
 
        case EEXIST:
@@ -467,6 +468,7 @@ zpool_standard_error_fmt(libzfs_handle_t
        case ENOSPC:
        case EDQUOT:
                zfs_verror(hdl, EZFS_NOSPC, fmt, ap);
+               va_end(ap);
                return (-1);
 
        case EAGAIN:

Modified: head/contrib/telnet/telnetd/state.c
==============================================================================
--- head/contrib/telnet/telnetd/state.c Fri Sep 28 05:30:59 2012        
(r241020)
+++ head/contrib/telnet/telnetd/state.c Fri Sep 28 07:51:30 2012        
(r241021)
@@ -1600,8 +1600,10 @@ output_data(const char *format, ...)
        char *buf;
 
        va_start(args, format);
-       if ((len = vasprintf(&buf, format, args)) == -1)
+       if ((len = vasprintf(&buf, format, args)) == -1) {
+               va_end(args);
                return -1;
+       }
        output_datalen(buf, len);
        va_end(args);
        free(buf);

Modified: head/usr.bin/csup/proto.c
==============================================================================
--- head/usr.bin/csup/proto.c   Fri Sep 28 05:30:59 2012        (r241020)
+++ head/usr.bin/csup/proto.c   Fri Sep 28 07:51:30 2012        (r241021)
@@ -789,18 +789,24 @@ proto_printf(struct stream *wr, const ch
 
                case '%':
                        n = stream_write(wr, "%", 1);
-                       if (n == -1)
+                       if (n == -1) {
+                               va_end(ap);
                                return (-1);
+                       }
                        break;
                }
-               if (rv == -1)
+               if (rv == -1) {
+                       va_end(ap);
                        return (-1);
+               }
                fmt = cp + 1;
        }
        if (*fmt != '\0') {
                rv = stream_printf(wr, "%s", fmt);
-               if (rv == -1)
+               if (rv == -1) {
+                       va_end(ap);
                        return (-1);
+               }
        }
 done:
        va_end(ap);

Modified: head/usr.sbin/pkg_install/lib/exec.c
==============================================================================
--- head/usr.sbin/pkg_install/lib/exec.c        Fri Sep 28 05:30:59 2012        
(r241020)
+++ head/usr.sbin/pkg_install/lib/exec.c        Fri Sep 28 07:51:30 2012        
(r241021)
@@ -93,6 +93,7 @@ vpipe(const char *fmt, ...)
     fp = popen(cmd, "r");
     if (fp == NULL) {
        warnx("popen() failed");
+       va_end(args);
        return NULL;
     }
     get_string(rp, MAXPATHLEN, fp);

Modified: head/usr.sbin/pw/pwupd.c
==============================================================================
--- head/usr.sbin/pw/pwupd.c    Fri Sep 28 05:30:59 2012        (r241020)
+++ head/usr.sbin/pw/pwupd.c    Fri Sep 28 07:51:30 2012        (r241021)
@@ -102,6 +102,7 @@ pwdb(char *arg,...)
                if (WEXITSTATUS(i))
                        i = EIO;
        }
+       va_end(ap);
        return i;
 }
 
_______________________________________________
svn-src-head@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to