From: Philippe De Swert <[email protected]>

Readlink can return the total length of the buffer (here 4096), so we do not
want to dereference target[4096] as that would give an off by one error.

Signed-off-by: Philippe De Swert <[email protected]>
---
 src/usbg.c | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/src/usbg.c b/src/usbg.c
index d73943c..c226731 100644
--- a/src/usbg.c
+++ b/src/usbg.c
@@ -856,9 +856,10 @@ static int usbg_parse_config_binding(usbg_config *c, char 
*bpath,
                goto out;
        }
 
-       /* readlink() don't add this,
-        * so we have to do it manually */
-       target[nmb] = '\0';
+       /* readlink() doesn't add this, so we have to do it manually,
+        * we need to take care to not overrun as readlink can return
+        * the maximum buffer and have a off-by-one error */
+       target[nmb-1] = '\0';
        /* Target contains a full path
         * but we need only function dir name */
        target_name = strrchr(target, '/') + 1;
-- 
1.8.1.2

--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to