components/ipmitool/patches/7126312.patch
author Lucy Wang <xiu-yan.wang@oracle.com>
Fri, 18 May 2012 10:00:01 -0700
changeset 822 185c3643cbc7
permissions -rw-r--r--
7126312 Problem with utility/ipmitool
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
822
185c3643cbc7 7126312 Problem with utility/ipmitool
Lucy Wang <xiu-yan.wang@oracle.com>
parents:
diff changeset
     1
--- ipmitool-1.8.11.old/lib/helper.c	Wed Feb 25 12:38:52 2009
185c3643cbc7 7126312 Problem with utility/ipmitool
Lucy Wang <xiu-yan.wang@oracle.com>
parents:
diff changeset
     2
+++ ipmitool-1.8.11/lib/helper.c	Wed May 16 18:23:19 2012
185c3643cbc7 7126312 Problem with utility/ipmitool
Lucy Wang <xiu-yan.wang@oracle.com>
parents:
diff changeset
     3
@@ -289,19 +289,33 @@
185c3643cbc7 7126312 Problem with utility/ipmitool
Lucy Wang <xiu-yan.wang@oracle.com>
parents:
diff changeset
     4
 {
185c3643cbc7 7126312 Problem with utility/ipmitool
Lucy Wang <xiu-yan.wang@oracle.com>
parents:
diff changeset
     5
 	struct stat st1, st2;
185c3643cbc7 7126312 Problem with utility/ipmitool
Lucy Wang <xiu-yan.wang@oracle.com>
parents:
diff changeset
     6
 	FILE * fp;
185c3643cbc7 7126312 Problem with utility/ipmitool
Lucy Wang <xiu-yan.wang@oracle.com>
parents:
diff changeset
     7
+	int fd = -1;
185c3643cbc7 7126312 Problem with utility/ipmitool
Lucy Wang <xiu-yan.wang@oracle.com>
parents:
diff changeset
     8
 
185c3643cbc7 7126312 Problem with utility/ipmitool
Lucy Wang <xiu-yan.wang@oracle.com>
parents:
diff changeset
     9
 	/* verify existance */
185c3643cbc7 7126312 Problem with utility/ipmitool
Lucy Wang <xiu-yan.wang@oracle.com>
parents:
diff changeset
    10
+	errno = 0;
185c3643cbc7 7126312 Problem with utility/ipmitool
Lucy Wang <xiu-yan.wang@oracle.com>
parents:
diff changeset
    11
 	if (lstat(file, &st1) < 0) {
185c3643cbc7 7126312 Problem with utility/ipmitool
Lucy Wang <xiu-yan.wang@oracle.com>
parents:
diff changeset
    12
-		if (rw) {
185c3643cbc7 7126312 Problem with utility/ipmitool
Lucy Wang <xiu-yan.wang@oracle.com>
parents:
diff changeset
    13
+		if (rw && (errno == ENOENT)) {
185c3643cbc7 7126312 Problem with utility/ipmitool
Lucy Wang <xiu-yan.wang@oracle.com>
parents:
diff changeset
    14
 			/* does not exist, ok to create */
185c3643cbc7 7126312 Problem with utility/ipmitool
Lucy Wang <xiu-yan.wang@oracle.com>
parents:
diff changeset
    15
-			fp = fopen(file, "w");
185c3643cbc7 7126312 Problem with utility/ipmitool
Lucy Wang <xiu-yan.wang@oracle.com>
parents:
diff changeset
    16
-			if (fp == NULL) {
185c3643cbc7 7126312 Problem with utility/ipmitool
Lucy Wang <xiu-yan.wang@oracle.com>
parents:
diff changeset
    17
+			fd = open(file,
185c3643cbc7 7126312 Problem with utility/ipmitool
Lucy Wang <xiu-yan.wang@oracle.com>
parents:
diff changeset
    18
+			    O_WRONLY | O_CREAT | O_EXCL, S_IRUSR | S_IWUSR
185c3643cbc7 7126312 Problem with utility/ipmitool
Lucy Wang <xiu-yan.wang@oracle.com>
parents:
diff changeset
    19
+			    | S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH);
185c3643cbc7 7126312 Problem with utility/ipmitool
Lucy Wang <xiu-yan.wang@oracle.com>
parents:
diff changeset
    20
+
185c3643cbc7 7126312 Problem with utility/ipmitool
Lucy Wang <xiu-yan.wang@oracle.com>
parents:
diff changeset
    21
+			if ( fd == -1 ) {
185c3643cbc7 7126312 Problem with utility/ipmitool
Lucy Wang <xiu-yan.wang@oracle.com>
parents:
diff changeset
    22
 				lperror(LOG_ERR, "Unable to open file %s "
185c3643cbc7 7126312 Problem with utility/ipmitool
Lucy Wang <xiu-yan.wang@oracle.com>
parents:
diff changeset
    23
 					"for write", file);
185c3643cbc7 7126312 Problem with utility/ipmitool
Lucy Wang <xiu-yan.wang@oracle.com>
parents:
diff changeset
    24
 				return NULL;
185c3643cbc7 7126312 Problem with utility/ipmitool
Lucy Wang <xiu-yan.wang@oracle.com>
parents:
diff changeset
    25
 			}
185c3643cbc7 7126312 Problem with utility/ipmitool
Lucy Wang <xiu-yan.wang@oracle.com>
parents:
diff changeset
    26
-			/* created ok, now return the descriptor */
185c3643cbc7 7126312 Problem with utility/ipmitool
Lucy Wang <xiu-yan.wang@oracle.com>
parents:
diff changeset
    27
-			return fp;
185c3643cbc7 7126312 Problem with utility/ipmitool
Lucy Wang <xiu-yan.wang@oracle.com>
parents:
diff changeset
    28
+
185c3643cbc7 7126312 Problem with utility/ipmitool
Lucy Wang <xiu-yan.wang@oracle.com>
parents:
diff changeset
    29
+			fp = fdopen(fd, "w");
185c3643cbc7 7126312 Problem with utility/ipmitool
Lucy Wang <xiu-yan.wang@oracle.com>
parents:
diff changeset
    30
+			if (fp == NULL) {
185c3643cbc7 7126312 Problem with utility/ipmitool
Lucy Wang <xiu-yan.wang@oracle.com>
parents:
diff changeset
    31
+				close(fd);
185c3643cbc7 7126312 Problem with utility/ipmitool
Lucy Wang <xiu-yan.wang@oracle.com>
parents:
diff changeset
    32
+				lperror(LOG_ERR, "Unable to open file %s "
185c3643cbc7 7126312 Problem with utility/ipmitool
Lucy Wang <xiu-yan.wang@oracle.com>
parents:
diff changeset
    33
+				    "for write", file);
185c3643cbc7 7126312 Problem with utility/ipmitool
Lucy Wang <xiu-yan.wang@oracle.com>
parents:
diff changeset
    34
+				return NULL;
185c3643cbc7 7126312 Problem with utility/ipmitool
Lucy Wang <xiu-yan.wang@oracle.com>
parents:
diff changeset
    35
+			} else
185c3643cbc7 7126312 Problem with utility/ipmitool
Lucy Wang <xiu-yan.wang@oracle.com>
parents:
diff changeset
    36
+				/* created ok, now return the descriptor */
185c3643cbc7 7126312 Problem with utility/ipmitool
Lucy Wang <xiu-yan.wang@oracle.com>
parents:
diff changeset
    37
+				return fp;
185c3643cbc7 7126312 Problem with utility/ipmitool
Lucy Wang <xiu-yan.wang@oracle.com>
parents:
diff changeset
    38
+
185c3643cbc7 7126312 Problem with utility/ipmitool
Lucy Wang <xiu-yan.wang@oracle.com>
parents:
diff changeset
    39
 		} else {
185c3643cbc7 7126312 Problem with utility/ipmitool
Lucy Wang <xiu-yan.wang@oracle.com>
parents:
diff changeset
    40
 			lprintf(LOG_ERR, "File %s does not exist", file);
185c3643cbc7 7126312 Problem with utility/ipmitool
Lucy Wang <xiu-yan.wang@oracle.com>
parents:
diff changeset
    41
 			return NULL;
185c3643cbc7 7126312 Problem with utility/ipmitool
Lucy Wang <xiu-yan.wang@oracle.com>
parents:
diff changeset
    42
@@ -322,7 +336,7 @@
185c3643cbc7 7126312 Problem with utility/ipmitool
Lucy Wang <xiu-yan.wang@oracle.com>
parents:
diff changeset
    43
 
185c3643cbc7 7126312 Problem with utility/ipmitool
Lucy Wang <xiu-yan.wang@oracle.com>
parents:
diff changeset
    44
 	/* it exists - only regular files, not links */
185c3643cbc7 7126312 Problem with utility/ipmitool
Lucy Wang <xiu-yan.wang@oracle.com>
parents:
diff changeset
    45
 	if (S_ISREG(st1.st_mode) == 0) {
185c3643cbc7 7126312 Problem with utility/ipmitool
Lucy Wang <xiu-yan.wang@oracle.com>
parents:
diff changeset
    46
-		lprintf(LOG_ERR, "File %s has invalid mode: %d",
185c3643cbc7 7126312 Problem with utility/ipmitool
Lucy Wang <xiu-yan.wang@oracle.com>
parents:
diff changeset
    47
+		lprintf(LOG_ERR, "File %s has invalid mode: %#o",
185c3643cbc7 7126312 Problem with utility/ipmitool
Lucy Wang <xiu-yan.wang@oracle.com>
parents:
diff changeset
    48
 			file, st1.st_mode);
185c3643cbc7 7126312 Problem with utility/ipmitool
Lucy Wang <xiu-yan.wang@oracle.com>
parents:
diff changeset
    49
 		return NULL;
185c3643cbc7 7126312 Problem with utility/ipmitool
Lucy Wang <xiu-yan.wang@oracle.com>
parents:
diff changeset
    50
 	}
185c3643cbc7 7126312 Problem with utility/ipmitool
Lucy Wang <xiu-yan.wang@oracle.com>
parents:
diff changeset
    51
@@ -347,10 +361,18 @@
185c3643cbc7 7126312 Problem with utility/ipmitool
Lucy Wang <xiu-yan.wang@oracle.com>
parents:
diff changeset
    52
 		return NULL;
185c3643cbc7 7126312 Problem with utility/ipmitool
Lucy Wang <xiu-yan.wang@oracle.com>
parents:
diff changeset
    53
 	}
185c3643cbc7 7126312 Problem with utility/ipmitool
Lucy Wang <xiu-yan.wang@oracle.com>
parents:
diff changeset
    54
 
185c3643cbc7 7126312 Problem with utility/ipmitool
Lucy Wang <xiu-yan.wang@oracle.com>
parents:
diff changeset
    55
+	/* verify dev */
185c3643cbc7 7126312 Problem with utility/ipmitool
Lucy Wang <xiu-yan.wang@oracle.com>
parents:
diff changeset
    56
+	if (st1.st_dev != st2.st_dev) {
185c3643cbc7 7126312 Problem with utility/ipmitool
Lucy Wang <xiu-yan.wang@oracle.com>
parents:
diff changeset
    57
+		lprintf(LOG_ERR, "File %s has invalid dev: %lu != %lu",
185c3643cbc7 7126312 Problem with utility/ipmitool
Lucy Wang <xiu-yan.wang@oracle.com>
parents:
diff changeset
    58
+			file, (ulong_t)st1.st_dev, (ulong_t)st2.st_dev);
185c3643cbc7 7126312 Problem with utility/ipmitool
Lucy Wang <xiu-yan.wang@oracle.com>
parents:
diff changeset
    59
+		fclose(fp);
185c3643cbc7 7126312 Problem with utility/ipmitool
Lucy Wang <xiu-yan.wang@oracle.com>
parents:
diff changeset
    60
+		return NULL;
185c3643cbc7 7126312 Problem with utility/ipmitool
Lucy Wang <xiu-yan.wang@oracle.com>
parents:
diff changeset
    61
+	}
185c3643cbc7 7126312 Problem with utility/ipmitool
Lucy Wang <xiu-yan.wang@oracle.com>
parents:
diff changeset
    62
+
185c3643cbc7 7126312 Problem with utility/ipmitool
Lucy Wang <xiu-yan.wang@oracle.com>
parents:
diff changeset
    63
 	/* verify inode */
185c3643cbc7 7126312 Problem with utility/ipmitool
Lucy Wang <xiu-yan.wang@oracle.com>
parents:
diff changeset
    64
 	if (st1.st_ino != st2.st_ino) {
185c3643cbc7 7126312 Problem with utility/ipmitool
Lucy Wang <xiu-yan.wang@oracle.com>
parents:
diff changeset
    65
-		lprintf(LOG_ERR, "File %s has invalid inode: %d != %d",
185c3643cbc7 7126312 Problem with utility/ipmitool
Lucy Wang <xiu-yan.wang@oracle.com>
parents:
diff changeset
    66
-			file, st1.st_ino, st2.st_ino);
185c3643cbc7 7126312 Problem with utility/ipmitool
Lucy Wang <xiu-yan.wang@oracle.com>
parents:
diff changeset
    67
+		lprintf(LOG_ERR, "File %s has invalid inode: %lu != %lu",
185c3643cbc7 7126312 Problem with utility/ipmitool
Lucy Wang <xiu-yan.wang@oracle.com>
parents:
diff changeset
    68
+			file, (ulong_t)st1.st_ino, (ulong_t)st2.st_ino);
185c3643cbc7 7126312 Problem with utility/ipmitool
Lucy Wang <xiu-yan.wang@oracle.com>
parents:
diff changeset
    69
 		fclose(fp);
185c3643cbc7 7126312 Problem with utility/ipmitool
Lucy Wang <xiu-yan.wang@oracle.com>
parents:
diff changeset
    70
 		return NULL;
185c3643cbc7 7126312 Problem with utility/ipmitool
Lucy Wang <xiu-yan.wang@oracle.com>
parents:
diff changeset
    71
 	}
185c3643cbc7 7126312 Problem with utility/ipmitool
Lucy Wang <xiu-yan.wang@oracle.com>
parents:
diff changeset
    72
@@ -427,7 +449,6 @@
185c3643cbc7 7126312 Problem with utility/ipmitool
Lucy Wang <xiu-yan.wang@oracle.com>
parents:
diff changeset
    73
 #endif
185c3643cbc7 7126312 Problem with utility/ipmitool
Lucy Wang <xiu-yan.wang@oracle.com>
parents:
diff changeset
    74
 
185c3643cbc7 7126312 Problem with utility/ipmitool
Lucy Wang <xiu-yan.wang@oracle.com>
parents:
diff changeset
    75
 	chdir("/");
185c3643cbc7 7126312 Problem with utility/ipmitool
Lucy Wang <xiu-yan.wang@oracle.com>
parents:
diff changeset
    76
-	umask(0);
185c3643cbc7 7126312 Problem with utility/ipmitool
Lucy Wang <xiu-yan.wang@oracle.com>
parents:
diff changeset
    77
 
185c3643cbc7 7126312 Problem with utility/ipmitool
Lucy Wang <xiu-yan.wang@oracle.com>
parents:
diff changeset
    78
 	for (fd=0; fd<64; fd++) {
185c3643cbc7 7126312 Problem with utility/ipmitool
Lucy Wang <xiu-yan.wang@oracle.com>
parents:
diff changeset
    79
 		if (fd != intf->fd)