fsx was calling vfprintf twice without resetting the va_list argument
authorLachlan McIlroy <lachlan@sgi.com>
Thu, 8 Mar 2007 03:02:20 +0000 (03:02 +0000)
committerLachlan McIlroy <lachlan@sgi.com>
Thu, 8 Mar 2007 03:02:20 +0000 (03:02 +0000)
Merge of master-melb:xfs-cmds:28212a by kenmcd.

  fsx was calling vfprintf twice without resetting the va_list argument and
  this caused a segfault on the second call.  Now uses one call to vsnprintf
  to print to a buffer and uses that multiple times.

ltp/fsx.c

index e90dd79c3642a0ede369bd625b0becc180a98dcc..ebe532494b90277062a983bd96ed9ba971c8998d 100644 (file)
--- a/ltp/fsx.c
+++ b/ltp/fsx.c
@@ -153,16 +153,20 @@ warn(const char * fmt, ...)  {
        va_end(ap);
 }
 
+#define BUF_SIZE 1024
+
 void
 prt(char *fmt, ...)
 {
        va_list args;
+       char buffer[BUF_SIZE];
 
        va_start(args, fmt);
-       vfprintf(stdout, fmt, args);
-       if (fsxlogf)
-               vfprintf(fsxlogf, fmt, args);
+       vsnprintf(buffer, BUF_SIZE, fmt, args);
        va_end(args);
+       fprintf(stdout, buffer);
+       if (fsxlogf)
+               fprintf(fsxlogf, buffer);
 }
 
 void