[PATCH] sfdisk: reread_ioctl: save errno before calling perror

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



errno is saved into a local variable to avoid it getting trampled
by perror before it is checked to determine the return value.

This issue seems quite rare, but I have seen it when running sfdisk
via gksudo and using the --quiet command-line option.  From what I
can tell, this combination triggers loading of translations in perror,
which (at least on my machine) ends up changing the value of errno.

Signed-off-by: Forest Bond <forest@xxxxxxxxxxxxxxxxxxx>
---
 fdisk/sfdisk.c |    5 ++++-
 1 files changed, 4 insertions(+), 1 deletions(-)

diff --git a/fdisk/sfdisk.c b/fdisk/sfdisk.c
index 6432b25..fd2f27e 100644
--- a/fdisk/sfdisk.c
+++ b/fdisk/sfdisk.c
@@ -784,10 +784,13 @@ reread_ioctl(int fd) {
     errno = ENOSYS;
 #endif
     {
+	/* perror might change errno */
+	int err = errno;
+
 	perror("BLKRRPART");
 
 	/* 2.6.8 returns EIO for a zero table */
-	if (errno == EBUSY)
+	if (err == EBUSY)
 		return -1;
     }
     return 0;
-- 
1.7.0.4

Attachment: signature.asc
Description: Digital signature


[Index of Archives]     [Netdev]     [Ethernet Bridging]     [Linux Wireless]     [Kernel Newbies]     [Security]     [Linux for Hams]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux Admin]     [Samba]

  Powered by Linux