diff options
-rw-r--r-- | examples/libsmbclient/smbwrapper/smbw.c | 14 | ||||
-rw-r--r-- | lib/torture/torture.c | 2 | ||||
-rw-r--r-- | libcli/auth/msrpc_parse.c | 4 | ||||
-rw-r--r-- | source4/lib/ldb/ldb_sqlite3/ldb_sqlite3.c | 1 |
4 files changed, 16 insertions, 5 deletions
diff --git a/examples/libsmbclient/smbwrapper/smbw.c b/examples/libsmbclient/smbwrapper/smbw.c index e2e44c1f0f..1356c78d04 100644 --- a/examples/libsmbclient/smbwrapper/smbw.c +++ b/examples/libsmbclient/smbwrapper/smbw.c @@ -55,12 +55,9 @@ smbw_ref -- manipulate reference counts ******************************************************/ int smbw_ref(int client_fd, Ref_Count_Type type, ...) { - va_list ap; - /* client id values begin at SMBC_BASE_FC. */ client_fd -= SMBC_BASE_FD; - va_start(ap, type); switch(type) { case SMBW_RCT_Increment: @@ -73,9 +70,16 @@ int smbw_ref(int client_fd, Ref_Count_Type type, ...) return smbw_ref_count[client_fd]; case SMBW_RCT_Set: - return (smbw_ref_count[client_fd] = va_arg(ap, int)); + { + va_list ap; + int ret; + + va_start(ap, type); + ret = (smbw_ref_count[client_fd] = va_arg(ap, int)); + va_end(ap); + return ret; + } } - va_end(ap); /* never gets here */ return -1; diff --git a/lib/torture/torture.c b/lib/torture/torture.c index 17adce94e5..99447e7e53 100644 --- a/lib/torture/torture.c +++ b/lib/torture/torture.c @@ -107,6 +107,7 @@ void torture_comment(struct torture_context *context, const char *comment, ...) va_start(ap, comment); tmp = talloc_vasprintf(context, comment, ap); + va_end(ap); context->results->ui_ops->comment(context, tmp); @@ -126,6 +127,7 @@ void torture_warning(struct torture_context *context, const char *comment, ...) va_start(ap, comment); tmp = talloc_vasprintf(context, comment, ap); + va_end(ap); context->results->ui_ops->warning(context, tmp); diff --git a/libcli/auth/msrpc_parse.c b/libcli/auth/msrpc_parse.c index 9125c1cd78..50e0d5c2f9 100644 --- a/libcli/auth/msrpc_parse.c +++ b/libcli/auth/msrpc_parse.c @@ -71,6 +71,7 @@ bool msrpc_gen(TALLOC_CTX *mem_ctx, (smb_ucs2_t **)(void *)&pointers[i].data, s, &n); if (!ret) { + va_end(ap); return false; } pointers[i].length = n; @@ -84,6 +85,7 @@ bool msrpc_gen(TALLOC_CTX *mem_ctx, pointers, (char **)(void *)&pointers[i].data, s, &n); if (!ret) { + va_end(ap); return false; } pointers[i].length = n; @@ -99,6 +101,7 @@ bool msrpc_gen(TALLOC_CTX *mem_ctx, (smb_ucs2_t **)(void *)&pointers[i].data, s, &n); if (!ret) { + va_end(ap); return false; } pointers[i].length = n; @@ -192,6 +195,7 @@ bool msrpc_gen(TALLOC_CTX *mem_ctx, /* a helpful macro to avoid running over the end of our blob */ #define NEED_DATA(amount) \ if ((head_ofs + amount) > blob->length) { \ + va_end(ap); \ return false; \ } diff --git a/source4/lib/ldb/ldb_sqlite3/ldb_sqlite3.c b/source4/lib/ldb/ldb_sqlite3/ldb_sqlite3.c index 8acbac4cc3..d0573d389e 100644 --- a/source4/lib/ldb/ldb_sqlite3/ldb_sqlite3.c +++ b/source4/lib/ldb/ldb_sqlite3/ldb_sqlite3.c @@ -485,6 +485,7 @@ query_int(const struct lsqlite3_private * lsqlite3, /* Format the query */ if ((p = sqlite3_vmprintf(pSql, args)) == NULL) { + va_end(args); return SQLITE_NOMEM; } |