70 lines
2.1 KiB
Diff
70 lines
2.1 KiB
Diff
From c4af0f3ab992977d7fde65240a15481a1adc859c Mon Sep 17 00:00:00 2001
|
|
From: =?UTF-8?q?Jos=C3=A9=20Exp=C3=B3sito?= <jexposit@redhat.com>
|
|
Date: Tue, 19 Mar 2024 13:45:19 +0100
|
|
Subject: [PATCH] vgaarb: Check snprintf return value
|
|
MIME-Version: 1.0
|
|
Content-Type: text/plain; charset=UTF-8
|
|
Content-Transfer-Encoding: 8bit
|
|
|
|
snprintf() might return a negative value if an error occurs.
|
|
Check its return value before using it in vgaarb_write().
|
|
|
|
Signed-off-by: José Expósito <jexposit@redhat.com>
|
|
---
|
|
src/common_vgaarb.c | 11 +++++++++++
|
|
1 file changed, 11 insertions(+)
|
|
|
|
diff --git a/src/common_vgaarb.c b/src/common_vgaarb.c
|
|
index 515275f..a1edfab 100644
|
|
--- a/src/common_vgaarb.c
|
|
+++ b/src/common_vgaarb.c
|
|
@@ -238,6 +238,8 @@ pci_device_vgaarb_set_target(struct pci_device *dev)
|
|
|
|
len = snprintf(buf, BUFSIZE, "target PCI:%04x:%02x:%02x.%x",
|
|
dev->domain, dev->bus, dev->dev, dev->func);
|
|
+ if (len < 0 || len >= BUFSIZE)
|
|
+ return -1;
|
|
|
|
ret = vgaarb_write(pci_sys->vgaarb_fd, buf, len);
|
|
if (ret)
|
|
@@ -268,6 +270,9 @@ pci_device_vgaarb_decodes(int new_vgaarb_rsrc)
|
|
return 0;
|
|
|
|
len = snprintf(buf, BUFSIZE, "decodes %s", rsrc_to_str(new_vgaarb_rsrc));
|
|
+ if (len < 0 || len >= BUFSIZE)
|
|
+ return -1;
|
|
+
|
|
ret = vgaarb_write(pci_sys->vgaarb_fd, buf, len);
|
|
if (ret == 0)
|
|
dev->vgaarb_rsrc = new_vgaarb_rsrc;
|
|
@@ -297,6 +302,8 @@ pci_device_vgaarb_lock(void)
|
|
return 0;
|
|
|
|
len = snprintf(buf, BUFSIZE, "lock %s", rsrc_to_str(dev->vgaarb_rsrc));
|
|
+ if (len < 0 || len >= BUFSIZE)
|
|
+ return -1;
|
|
|
|
return vgaarb_write(pci_sys->vgaarb_fd, buf, len);
|
|
}
|
|
@@ -315,6 +322,8 @@ pci_device_vgaarb_trylock(void)
|
|
return 0;
|
|
|
|
len = snprintf(buf, BUFSIZE, "trylock %s", rsrc_to_str(dev->vgaarb_rsrc));
|
|
+ if (len < 0 || len >= BUFSIZE)
|
|
+ return -1;
|
|
|
|
return vgaarb_write(pci_sys->vgaarb_fd, buf, len);
|
|
}
|
|
@@ -333,6 +342,8 @@ pci_device_vgaarb_unlock(void)
|
|
return 0;
|
|
|
|
len = snprintf(buf, BUFSIZE, "unlock %s", rsrc_to_str(dev->vgaarb_rsrc));
|
|
+ if (len < 0 || len >= BUFSIZE)
|
|
+ return -1;
|
|
|
|
return vgaarb_write(pci_sys->vgaarb_fd, buf, len);
|
|
}
|
|
--
|
|
2.44.0
|
|
|