Blame SOURCES/0018-calls-to-sysfs_readlink-check-linkbuf-for-NULLness.patch

ac385c
From 38039634f722eb6e3ef4221e3f37c19a1bc96ae7 Mon Sep 17 00:00:00 2001
ac385c
From: Peter Jones <pjones@redhat.com>
ac385c
Date: Mon, 1 May 2017 15:21:13 -0400
ac385c
Subject: [PATCH 18/22] calls to sysfs_readlink(): check linkbuf for NULLness.
ac385c
ac385c
If linkbuf were NULL, sysfs_readlink() would have returned an error, but
ac385c
covscan can't figure that out, so it thinks linkbuf might be NULL.
ac385c
ac385c
Signed-off-by: Peter Jones <pjones@redhat.com>
ac385c
---
ac385c
 src/linux.c | 16 ++++++++--------
ac385c
 1 file changed, 8 insertions(+), 8 deletions(-)
ac385c
ac385c
diff --git a/src/linux.c b/src/linux.c
ac385c
index 3c77a93..85b4ee3 100644
ac385c
--- a/src/linux.c
ac385c
+++ b/src/linux.c
ac385c
@@ -53,7 +53,7 @@ set_disk_and_part_name(struct disk_info *info)
ac385c
 
ac385c
 	rc = sysfs_readlink(&linkbuf, "/sys/dev/block/%"PRIu64":%"PRIu32,
ac385c
 		      info->major, info->minor);
ac385c
-	if (rc < 0)
ac385c
+	if (rc < 0 || !linkbuf)
ac385c
 		return -1;
ac385c
 
ac385c
 	char *ultimate;
ac385c
@@ -141,7 +141,7 @@ get_partition_number(const char *devpath)
ac385c
 	min = minor(statbuf.st_rdev);
ac385c
 
ac385c
 	rc = sysfs_readlink(&linkbuf, "/sys/dev/block/%u:%u", maj, min);
ac385c
-	if (rc < 0)
ac385c
+	if (rc < 0 || !linkbuf)
ac385c
 		return -1;
ac385c
 
ac385c
 	rc = read_sysfs_file(&partbuf, "/sys/dev/block/%s/partition", linkbuf);
ac385c
@@ -170,7 +170,7 @@ find_parent_devpath(const char * const child, char **parent)
ac385c
 
ac385c
 	/* look up full path symlink */
ac385c
 	ret = sysfs_readlink(&linkbuf, "/sys/class/block/%s", node);
ac385c
-	if (ret < 0)
ac385c
+	if (ret < 0 || !linkbuf)
ac385c
 		return ret;
ac385c
 
ac385c
 	/* strip child */
ac385c
@@ -747,7 +747,7 @@ make_blockdev_path(uint8_t *buf, ssize_t size, struct disk_info *info)
ac385c
 
ac385c
 	rc = sysfs_readlink(&linkbuf, "/sys/dev/block/%"PRIu64":%u",
ac385c
 			    info->major, info->minor);
ac385c
-	if (rc < 0)
ac385c
+	if (rc < 0 || !linkbuf)
ac385c
 		return -1;
ac385c
 
ac385c
 	/*
ac385c
@@ -771,7 +771,7 @@ make_blockdev_path(uint8_t *buf, ssize_t size, struct disk_info *info)
ac385c
 		return -1;
ac385c
 	tmppath[loff] = '\0';
ac385c
 	rc = sysfs_readlink(&driverbuf, "/sys/dev/block/%s/driver", tmppath);
ac385c
-	if (rc < 0)
ac385c
+	if (rc < 0 || !driverbuf)
ac385c
 		return -1;
ac385c
 
ac385c
 	char *driver = strrchr(driverbuf, '/');
ac385c
@@ -867,7 +867,7 @@ make_blockdev_path(uint8_t *buf, ssize_t size, struct disk_info *info)
ac385c
 
ac385c
 		rc = sysfs_readlink(&linkbuf, "/sys/class/block/%s/device",
ac385c
 			      info->disk_name);
ac385c
-		if (rc < 0)
ac385c
+		if (rc < 0 || !linkbuf)
ac385c
 			return 0;
ac385c
 
ac385c
 		rc = sscanf(linkbuf, "../../../%d:%d:%d:%"PRIu64,
ac385c
@@ -1001,14 +1001,14 @@ make_net_pci_path(uint8_t *buf, ssize_t size, const char * const ifname)
ac385c
 	int rc;
ac385c
 
ac385c
 	rc = sysfs_readlink(&linkbuf, "/sys/class/net/%s", ifname);
ac385c
-	if (rc < 0)
ac385c
+	if (rc < 0 || !linkbuf)
ac385c
 		return -1;
ac385c
 
ac385c
 	/*
ac385c
 	 * the sysfs path basically looks like:
ac385c
 	 * ../../devices/$PCI_STUFF/net/$IFACE
ac385c
 	 */
ac385c
-	rc = sscanf(linkbuf+loff, "../../devices/%n", &lsz;;
ac385c
+	rc = sscanf(linkbuf, "../../devices/%n", &lsz;;
ac385c
 	if (rc != 0)
ac385c
 		return -1;
ac385c
 	loff += lsz;
ac385c
-- 
ac385c
2.12.2
ac385c