Package: partimage Version: 0.6.8-1 Severity: normal Tags: upstream patch How to reproduce: - Reboot in an environment without /etc/mtab - Try to save a partition without --allowmnt
Cause of problem: - src/client/misc.cpp isMounted() returns -1 when /etc/mtab is not found - src/client/misc.cpp systemChecks() checks for false - anything else is interpreted as "partition mounted". - szMountPoint is printed with msgBoxContinueCancel without being nulled and without being touched by isMounted() Workaround: - Run partimage with --allowmnt (-m) -- System Information: Debian Release: 6.0.2 APT prefers stable-updates APT policy: (500, 'stable-updates'), (500, 'stable') Architecture: i386 (i686) Kernel: Linux 2.6.32-5-686 (SMP w/2 CPU cores) Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8) Shell: /bin/sh linked to /bin/dash Versions of packages partimage depends on: ii libbz2-1.0 1.0.5-6 high-quality block-sorting file co ii libc6 2.11.2-10 Embedded GNU C Library: Shared lib ii libgcc1 1:4.4.5-8 GCC support library ii libnewt0.52 0.52.11-1 Not Erik's Windowing Toolkit - tex ii libpam0g 1.1.1-6.1 Pluggable Authentication Modules l ii libslang2 2.2.2-4 The S-Lang programming library - r ii libssl0.9.8 0.9.8o-4squeeze1 SSL shared libraries ii libstdc++6 4.4.5-8 The GNU Standard C++ Library v3 ii zlib1g 1:1.2.3.4.dfsg-3 compression library - runtime partimage recommends no packages. partimage suggests no packages. -- no debconf information
--- src/client/misc.cpp.orig 2009-09-24 21:49:45.000000000 +0200 +++ src/client/misc.cpp 2011-08-31 21:25:50.000000000 +0200 @@ -1934,6 +1934,7 @@ int systemChecks(char *szDevice, bool bF { char szMountPoint[1024]; int nRes; + int iMRV; // isMounted() Return Value // ----------- check for inode nRes = checkInodeForDevice(szDevice, szFullyBatchMode); @@ -1949,10 +1950,15 @@ int systemChecks(char *szDevice, bool bF } // ----------- check the partition is not mounted - if ((bFailIfMounted == true) && (isMounted(szDevice, szMountPoint) != false)) + if ((bFailIfMounted == true) && ((iMRV=isMounted(szDevice, szMountPoint)) != false)) { + if (iMRV==-1) { + nRes = g_interface->msgBoxContinueCancel(i18n("Error"), i18n("Can not find out if %s partition is mounted or not. Backing up mounted partitions is dangerous and mostly pointless. " + "Please, cancel unless you are very sure it is a good idea to continue."), szDevice); + } else { nRes = g_interface->msgBoxContinueCancel(i18n("Error"), i18n("The %s partition is mounted. Partition Image can't work on mounted partitions. " "Please, unmount it before. You can do it with \"umount %s\""), szDevice, szMountPoint); + } if (nRes == MSGBOX_CANCEL) RETURN_int(-1); }