svn commit: r242530 - head/bin/sh
Jilles Tjoelker
jilles at FreeBSD.org
Sat Nov 3 22:23:09 UTC 2012
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;
More information about the svn-src-all
mailing list