]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
parthelper: fix compilation without optimization
authorEric Blake <eblake@redhat.com>
Mon, 14 Jun 2010 20:54:31 +0000 (14:54 -0600)
committerEric Blake <eblake@redhat.com>
Mon, 14 Jun 2010 21:11:49 +0000 (15:11 -0600)
Daniel's patch works with gcc and CFLAGS containing -O (the
autoconf default), but fails with non-gcc or with other
CFLAGS (such as -g), since c-ctype.h declares c_isdigit as
a macro only for certain compilation settings.

* src/Makefile.am (libvirt_parthelper_LDFLAGS): Add gnulib
library, for when c_isdigit is not a macro.
* src/storage/parthelper.c (main): Avoid out-of-bounds
dereference, noticed by Jim Meyering.

src/Makefile.am
src/storage/parthelper.c

index 6bdf73cca8d3aeb1b6b86e903d30be068f902c7b..2129960e1d277431f02026e118d4c45da008d32e 100644 (file)
@@ -1038,7 +1038,7 @@ libexec_PROGRAMS += libvirt_parthelper
 libvirt_parthelper_SOURCES = $(STORAGE_HELPER_DISK_SOURCES)
 libvirt_parthelper_LDFLAGS = $(WARN_LDFLAGS) $(COVERAGE_LDFLAGS)
 libvirt_parthelper_LDADD = $(LIBPARTED_LIBS)
-libvirt_parthelper_CFLAGS =  $(LIBPARTED_CFLAGS)
+libvirt_parthelper_CFLAGS = $(LIBPARTED_CFLAGS) ../gnulib/lib/libgnu.la
 endif
 endif
 EXTRA_DIST += $(STORAGE_HELPER_DISK_SOURCES)
index 28d88c91e9e65f5858b07ede319367ec7811ff14..ca74456b76289d27eab4c0615a3ae9cced550f82 100644 (file)
@@ -69,7 +69,7 @@ int main(int argc, char **argv)
     }
 
     path = argv[1];
-    partsep = c_isdigit(path[strlen(path)-1]) ? "p" : "";
+    partsep = *path && c_isdigit(path[strlen(path)-1]) ? "p" : "";
 
     if ((dev = ped_device_get(path)) == NULL) {
         fprintf(stderr, "unable to access device %s\n", path);