[libvirt] PATCH: Fix compiler flag check for -Wformat-security

Daniel P. Berrange berrange at redhat.com
Mon Apr 27 10:37:35 UTC 2009


Certain versions of GCC will ignore the -Wformat-security flag unless you
have also set the -Wformat flag. Unfortunately when checking flags, we only
check one at a time in isolation, so it was thinking -Wformat-security
is not supported in Fedora. The fix is to include all previously verified
flags during the check process, but not for -Werror because for added fun,
the autoconf test program itself causes compile warnings with some flags
we have. The patch also fixes 3 harmless format problems in virsh

Daniel

Index: m4/compiler-flags.m4
===================================================================
RCS file: /data/cvs/libvirt/m4/compiler-flags.m4,v
retrieving revision 1.2
diff -u -p -r1.2 compiler-flags.m4
--- m4/compiler-flags.m4	14 Jan 2009 15:23:26 -0000	1.2
+++ m4/compiler-flags.m4	27 Apr 2009 10:34:43 -0000
@@ -24,7 +24,15 @@ AC_DEFUN([gl_COMPILER_FLAGS],
   [AC_MSG_CHECKING(whether compiler accepts $1)
    AC_SUBST(COMPILER_FLAGS)
    ac_save_CFLAGS="$CFLAGS"
-   CFLAGS="$CFLAGS $1"
+   dnl Some flags are dependant, so we set all previously checked
+   dnl flags when testing. Except for -Werror which we have to 
+   dnl check on its own, because some of our compiler flags cause
+   dnl warnings from the autoconf test program!
+   if test "$1" = "-Werror" ; then
+     CFLAGS="$CFLAGS $1"
+   else
+     CFLAGS="$CFLAGS $COMPILER_FLAGS $1"
+   fi
    AC_TRY_LINK([], [], has_option=yes, has_option=no,)
    echo 'int x;' >conftest.c
    $CC $CFLAGS -c conftest.c 2>conftest.err
Index: src/virsh.c
===================================================================
RCS file: /data/cvs/libvirt/src/virsh.c,v
retrieving revision 1.201
diff -u -p -r1.201 virsh.c
--- src/virsh.c	15 Apr 2009 20:09:09 -0000	1.201
+++ src/virsh.c	27 Apr 2009 10:34:45 -0000
@@ -4463,7 +4463,7 @@ cmdNodeListDevicesPrint(vshControl *ctl,
     }
 
     /* Print this device */
-    vshPrint(ctl, indentBuf);
+    vshPrint(ctl, "%s", indentBuf);
     vshPrint(ctl, "%s\n", devices[devid]);
 
 
@@ -4487,7 +4487,7 @@ cmdNodeListDevicesPrint(vshControl *ctl,
 
     /* If there is a child device, then print another blank line */
     if (nextlastdev != -1) {
-        vshPrint(ctl, indentBuf);
+        vshPrint(ctl, "%s", indentBuf);
         vshPrint(ctl, "  |\n");
     }
 
@@ -4511,7 +4511,7 @@ cmdNodeListDevicesPrint(vshControl *ctl,
     /* If there was no child device, and we're the last in
      * a list of devices, then print another blank line */
     if (nextlastdev == -1 && devid == lastdev) {
-        vshPrint(ctl, indentBuf);
+        vshPrint(ctl, "%s", indentBuf);
         vshPrint(ctl, "\n");
     }
 }


-- 
|: Red Hat, Engineering, London   -o-   http://people.redhat.com/berrange/ :|
|: http://libvirt.org  -o-  http://virt-manager.org  -o-  http://ovirt.org :|
|: http://autobuild.org       -o-         http://search.cpan.org/~danberr/ :|
|: GnuPG: 7D3B9505  -o-  F3C9 553F A1DA 4AC2 5648 23C1 B3DF F742 7D3B 9505 :|




More information about the libvir-list mailing list