[PATCH libpciaccess 1/2] vgaarb: add a the trailing NULL character on read(vgaarb_fd)

Emil Velikov emil.l.velikov at gmail.com
Mon Feb 23 13:31:06 PST 2015


From: arsharma <ankitprasad.r.sharma at intel.com>

Issue was spotted by Klocwork, and fixed by arsharma as part of
Android-ia. Not 100% sure if the data read from /dev/vga_arbiter is not
already null terminated, but making sure won't hurt either.

[Emil Velikov: Split from larger patch, write commit message]
Signed-off-by: Emil Velikov <emil.l.velikov at gmail.com>
---
 src/common_vgaarb.c | 12 +++++++++---
 1 file changed, 9 insertions(+), 3 deletions(-)

diff --git a/src/common_vgaarb.c b/src/common_vgaarb.c
index 7a7d204..515275f 100644
--- a/src/common_vgaarb.c
+++ b/src/common_vgaarb.c
@@ -126,7 +126,7 @@ int
 pci_device_vgaarb_init(void)
 {
     struct pci_slot_match match;
-    char buf[BUFSIZE];
+    char buf[BUFSIZE + 1]; /* reading BUFSIZE characters, + 1 for NULL */
     int ret, rsrc;
 
     if (!pci_sys)
@@ -140,6 +140,8 @@ pci_device_vgaarb_init(void)
     if (ret <= 0)
         return -1;
 
+    buf[ret] = 0; /* ret will never be greater than BUFSIZE */
+
     memset(&match, 0xff, sizeof(match));
     /* need to find the device to go back to and what it was decoding */
     rsrc = parse_string_to_decodes_rsrc(buf, &pci_sys->vga_count, &match);
@@ -226,7 +228,7 @@ int
 pci_device_vgaarb_set_target(struct pci_device *dev)
 {
     int len;
-    char buf[BUFSIZE];
+    char buf[BUFSIZE + 1]; /* reading BUFSIZE characters, + 1 for NULL */
     int ret;
 
     if (!dev)
@@ -245,6 +247,8 @@ pci_device_vgaarb_set_target(struct pci_device *dev)
     if (ret <= 0)
         return -1;
 
+    buf[ret] = 0; /* ret will never be greater than BUFSIZE */
+
     dev->vgaarb_rsrc = parse_string_to_decodes_rsrc(buf, &pci_sys->vga_count, NULL);
     pci_sys->vga_target = dev;
     return 0;
@@ -254,7 +258,7 @@ int
 pci_device_vgaarb_decodes(int new_vgaarb_rsrc)
 {
     int len;
-    char buf[BUFSIZE];
+    char buf[BUFSIZE + 1]; /* reading BUFSIZE characters, + 1 for NULL */
     int ret;
     struct pci_device *dev = pci_sys->vga_target;
 
@@ -272,6 +276,8 @@ pci_device_vgaarb_decodes(int new_vgaarb_rsrc)
     if (ret <= 0)
         return -1;
 
+    buf[ret] = 0; /* ret will never be greater than BUFSIZE */
+
     parse_string_to_decodes_rsrc(buf, &pci_sys->vga_count, NULL);
 
     return ret;
-- 
2.3.0



More information about the xorg-devel mailing list