On 10/19/11 09:01, Dave Airlie wrote:
From: Dave Airlie<[email protected]>

this code wasn't allocating enough space and was assigning the NULL
one past the end.

Pointed out by coverity.

Signed-off-by: Dave Airlie<[email protected]>
---
  hw/kdrive/src/kinput.c |    2 +-
  1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/hw/kdrive/src/kinput.c b/hw/kdrive/src/kinput.c
index c14dd82..977131c 100644
--- a/hw/kdrive/src/kinput.c
+++ b/hw/kdrive/src/kinput.c
@@ -1054,7 +1054,7 @@ KdGetOptions (InputOption **options, char *string)
      if (strchr(string, '='))
      {
          tam_key = (strchr(string, '=') - string);
-        newopt->key = (char *)malloc(tam_key);
+        newopt->key = (char *)malloc(tam_key + 1);
          strncpy(newopt->key, string, tam_key);
          newopt->key[tam_key] = '\0';
          newopt->value = strdup(strchr(string, '=') + 1);

Is strndup() portable enough to be used here?  I don't see any other
instances yet in the xserver git master or any of the other X.Org
trees I have checked out.

It's not in our traditional Unix98 baseline, but
http://pubs.opengroup.org/onlinepubs/9699919799/functions/strdup.html
says it's in the 2008 version of POSIX.

Otherwise, what you have looks best, so:
Reviewed-by: Alan Coopersmith <[email protected]>

--
        -Alan Coopersmith-        [email protected]
         Oracle Solaris Platform Engineering: X Window System

_______________________________________________
[email protected]: X.Org development
Archives: http://lists.x.org/archives/xorg-devel
Info: http://lists.x.org/mailman/listinfo/xorg-devel

Reply via email to