diff options
author | Andrew Cagney <cagney@redhat.com> | 2000-07-06 07:25:02 +0000 |
---|---|---|
committer | Andrew Cagney <cagney@redhat.com> | 2000-07-06 07:25:02 +0000 |
commit | beb2de9b6154707bebd2fdd24d337a25ac8a638c (patch) | |
tree | 584638e2b16e2274e0ed1bd62d9334f99bcbe2f2 /gas/as.c | |
parent | 24ddb296289548f4991abd3621fb549c5ad6ddfd (diff) | |
download | binutils-beb2de9b6154707bebd2fdd24d337a25ac8a638c.zip binutils-beb2de9b6154707bebd2fdd24d337a25ac8a638c.tar.gz binutils-beb2de9b6154707bebd2fdd24d337a25ac8a638c.tar.bz2 |
Always NULL terminate long option list.
Diffstat (limited to 'gas/as.c')
-rw-r--r-- | gas/as.c | 11 |
1 files changed, 8 insertions, 3 deletions
@@ -425,13 +425,18 @@ parse_args (pargc, pargv) {"fatal-warnings", no_argument, NULL, OPTION_WARN_FATAL} }; - /* Construct the option lists from the standard list and the - target dependent list. */ + /* Construct the option lists from the standard list and the target + dependent list. Include space for an extra NULL option and + always NULL terminate. */ shortopts = concat (std_shortopts, md_shortopts, (char *) NULL); - longopts = (struct option *) xmalloc (sizeof (std_longopts) + md_longopts_size); + longopts = (struct option *) xmalloc (sizeof (std_longopts) + + md_longopts_size + + sizeof (struct option)); memcpy (longopts, std_longopts, sizeof (std_longopts)); memcpy ((char *) longopts + sizeof (std_longopts), md_longopts, md_longopts_size); + memset ((char *) longopts + sizeof (std_longopts) + md_longopts_size, + 0, sizeof (struct option)); /* Make a local copy of the old argv. */ old_argc = *pargc; |