diff options
author | Andrew Kroeger <andrew@id10ts.net> | 2009-06-12 13:01:41 +0200 |
---|---|---|
committer | Andrew Bartlett <abartlet@samba.org> | 2009-06-18 13:49:25 +1000 |
commit | 71515ba190e90e0250b9de23b7ba871c1dd44f09 (patch) | |
tree | 88217cd2054ab02cbdc88aa9df620112572318e0 /examples/libsmbclient | |
parent | efe6552f0c1b2cf7e7f95987e7c808667166a303 (diff) | |
download | samba-71515ba190e90e0250b9de23b7ba871c1dd44f09.tar.gz samba-71515ba190e90e0250b9de23b7ba871c1dd44f09.tar.bz2 samba-71515ba190e90e0250b9de23b7ba871c1dd44f09.zip |
s4: Call va_end() after all va_start()/va_copy() calls.
This corrects the issues reaised in bug #6129, and some others that were not
originally identified. It also accounts for some code that was in the original
bug report but appears to have since been made common between S3 and S4.
Thanks to Erik Hovland <erik@hovland.org> for the original bug report.
Diffstat (limited to 'examples/libsmbclient')
-rw-r--r-- | examples/libsmbclient/smbwrapper/smbw.c | 14 |
1 files changed, 9 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; |