Author: jilles
Date: Sat Nov  3 22:23:08 2012
New Revision: 242530
URL: http://svn.freebsd.org/changeset/base/242530

Log:
  sh: Use C99 flexible array instead of accessing array beyond bounds.
  
  Although sufficient memory is available for a longer string in cmdname,
  this is undefined behaviour anyway.
  
  Side effect: for alignment reasons, an additional byte of memory is
  allocated per hashed command.

Modified:
  head/bin/sh/exec.c

Modified: head/bin/sh/exec.c
==============================================================================
--- head/bin/sh/exec.c  Sat Nov  3 22:21:37 2012        (r242529)
+++ head/bin/sh/exec.c  Sat Nov  3 22:23:08 2012        (r242530)
@@ -78,7 +78,6 @@ __FBSDID("$FreeBSD$");
 
 
 #define CMDTABLESIZE 31                /* should be prime */
-#define ARB 1                  /* actual size determined at run time */
 
 
 
@@ -88,7 +87,7 @@ struct tblentry {
        int special;            /* flag for special builtin commands */
        short cmdtype;          /* index identifying command */
        char rehash;            /* if set, cd done since entry created */
-       char cmdname[ARB];      /* name of command */
+       char cmdname[];         /* name of command */
 };
 
 
@@ -563,7 +562,7 @@ cmdlookup(const char *name, int add)
        }
        if (add && cmdp == NULL) {
                INTOFF;
-               cmdp = *pp = ckmalloc(sizeof (struct tblentry) - ARB
+               cmdp = *pp = ckmalloc(sizeof (struct tblentry)
                                        + strlen(name) + 1);
                cmdp->next = NULL;
                cmdp->cmdtype = CMDUNKNOWN;
_______________________________________________
svn-src-head@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to