[25917] in CVS-changelog-for-Kerberos-V5

home help back first fref pref prev next nref lref last post

svn rev #25407: tools/gssmonger/trunk/gssmaggot/

daemon@ATHENA.MIT.EDU (ghudson@mit.edu)
Mon Oct 24 00:28:53 2011

Date: Mon, 24 Oct 2011 00:28:50 -0400
From: ghudson@mit.edu
Message-Id: <201110240428.p9O4SocP002751@drugstore.mit.edu>
To: cvs-krb5@mit.edu
Reply-To: krbdev@mit.edu
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Errors-To: cvs-krb5-bounces@mit.edu

http://src.mit.edu/fisheye/changelog/krb5/?cs=25407
Commit By: ghudson
Log Message:
Fix a stdarg violation in ServerSendLogEntry().

Use va_copy to avoid using the same va_arg list twice.  Also use a
more useful portability construction for va_copy (should work on C99
platforms and on MSVC).



Changed Files:
U   tools/gssmonger/trunk/gssmaggot/logging.c
Modified: tools/gssmonger/trunk/gssmaggot/logging.c
===================================================================
--- tools/gssmonger/trunk/gssmaggot/logging.c	2011-10-21 23:15:27 UTC (rev 25406)
+++ tools/gssmonger/trunk/gssmaggot/logging.c	2011-10-24 04:28:50 UTC (rev 25407)
@@ -73,6 +73,10 @@
 #include "server.h"
 #include "extend.h"
 
+#ifndef va_copy
+#define va_copy(a, b) ((a) = (b))  /* Works on Windows */
+#endif
+
 /*++**************************************************************
   NAME:      ExpandArgsToBuffer
 
@@ -124,18 +128,15 @@
 
       Buffer                  = (LPSTR) pvTmp;
 
-	#ifdef __va_copy
-		__va_copy(vaTmp, InVa);
-	#else /* __va_copy */
-	      vaTmp                   = InVa;
-	#endif /* __va_copy */
+      va_copy(vaTmp, InVa);
 
-	Buffer[ SizeAttempt-1 ] = '\0';
+      Buffer[ SizeAttempt-1 ] = '\0';
 
       vsnprintf( Buffer,
                  SizeAttempt,
                  fmt,
                  vaTmp );
+      va_end(vaTmp);
 
       if ( '\0' == Buffer[ SizeAttempt -1 ] ) {
         *ppBuffer = Buffer;
@@ -211,6 +212,7 @@
 #ifdef HACK_AROUND_LINUX_ALLOCATOR_BUG
     CHAR    buffer[ 100 ];
 #endif
+    va_list vaTmp;
 
     {
 	const char *basename = strrchr(file, '/');
@@ -221,9 +223,10 @@
 	printf( "%s:%ld: ", basename, line );
     }
 
+    va_copy(vaTmp, va);
     StringLength = vfprintf( stdout,
                              fmt,
-                             va );
+                             vaTmp );
 
     printf( "\n" );
 

_______________________________________________
cvs-krb5 mailing list
cvs-krb5@mit.edu
https://mailman.mit.edu/mailman/listinfo/cvs-krb5

home help back first fref pref prev next nref lref last post