From: Eric Blake Date: Mon, 14 Jun 2010 20:54:31 +0000 (-0600) Subject: parthelper: fix compilation without optimization X-Git-Tag: v0.8.2~86 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=352b6df34d930eb6e7c1f79f295ab6dff9b273e2;p=thirdparty%2Flibvirt.git parthelper: fix compilation without optimization 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. --- diff --git a/src/Makefile.am b/src/Makefile.am index 6bdf73cca8..2129960e1d 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -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) diff --git a/src/storage/parthelper.c b/src/storage/parthelper.c index 28d88c91e9..ca74456b76 100644 --- a/src/storage/parthelper.c +++ b/src/storage/parthelper.c @@ -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);