123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204 |
- diff --git a/builtins/fc.def b/builtins/fc.def
- index fe16471..98c53db 100644
- --- a/builtins/fc.def
- +++ b/builtins/fc.def
- @@ -423,6 +423,7 @@ fc_builtin (list)
- {
- sh_wrerror ();
- fclose (stream);
- + FREE (fn);
- return (EXECUTION_FAILURE);
- }
- fclose (stream);
- diff --git a/execute_cmd.c b/execute_cmd.c
- index 63a332a..15b5e19 100644
- --- a/execute_cmd.c
- +++ b/execute_cmd.c
- @@ -2196,8 +2196,10 @@ coproc_setvars (cp)
- if (v == 0)
- {
- v = find_variable_nameref_for_create (cp->c_name, 1);
- - if (v == INVALID_NAMEREF_VALUE)
- - return;
- + if (v == INVALID_NAMEREF_VALUE) {
- + free (namevar);
- + return;
- + }
- if (v && nameref_p (v))
- {
- free (cp->c_name);
- @@ -2210,6 +2212,7 @@ coproc_setvars (cp)
- {
- if (readonly_p (v))
- err_readonly (cp->c_name);
- + free (namevar);
- return;
- }
- if (v == 0)
- @@ -5528,7 +5531,6 @@ shell_execve (command, args, env)
- char *interp;
- int ilen;
-
- - close (fd);
- interp = getinterp (sample, sample_len, (int *)NULL);
- ilen = strlen (interp);
- errno = i;
- diff --git a/expr.c b/expr.c
- index 172964a..5dc57c0 100644
- --- a/expr.c
- +++ b/expr.c
- @@ -207,7 +207,8 @@ static intmax_t exp5 __P((void));
- static intmax_t exp4 __P((void));
- static intmax_t expshift __P((void));
- static intmax_t exp3 __P((void));
- -static intmax_t exp2 __P((void));
- +/* Avoid name clash with standard exp2 */
- +static intmax_t bash_exp2 __P((void));
- static intmax_t exppower __P((void));
- static intmax_t exp1 __P((void));
- static intmax_t exp0 __P((void));
- @@ -809,14 +810,14 @@ exp3 ()
- {
- register intmax_t val1, val2;
-
- - val1 = exp2 ();
- + val1 = bash_exp2 ();
-
- while ((curtok == PLUS) || (curtok == MINUS))
- {
- int op = curtok;
-
- readtok ();
- - val2 = exp2 ();
- + val2 = bash_exp2 ();
-
- if (op == PLUS)
- val1 += val2;
- @@ -828,7 +829,7 @@ exp3 ()
- }
-
- static intmax_t
- -exp2 ()
- +bash_exp2 ()
- {
- register intmax_t val1, val2;
- #if defined (HAVE_IMAXDIV)
- diff --git a/lib/glob/glob.c b/lib/glob/glob.c
- index 7f6eafe..c018e29 100644
- --- a/lib/glob/glob.c
- +++ b/lib/glob/glob.c
- @@ -576,7 +576,7 @@ glob_vector (pat, dir, flags)
- register char *nextname, *npat, *subdir;
- unsigned int count;
- int lose, skip, ndirs, isdir, sdlen, add_current, patlen;
- - register char **name_vector;
- + register char **name_vector = NULL;
- register unsigned int i;
- int mflags; /* Flags passed to strmatch (). */
- int pflags; /* flags passed to sh_makepath () */
- @@ -894,7 +894,7 @@ glob_vector (pat, dir, flags)
- }
-
- /* Don't call QUIT; here; let higher layers deal with it. */
- -
- + FREE (name_vector);
- return ((char **)NULL);
- }
-
- diff --git a/lib/sh/pathcanon.c b/lib/sh/pathcanon.c
- index f19bd55..2a565d6 100644
- --- a/lib/sh/pathcanon.c
- +++ b/lib/sh/pathcanon.c
- @@ -227,7 +227,7 @@ sh_canonpath (path, flags)
- if (result[2] == '\0') /* short-circuit for bare `//' */
- result[1] = '\0';
- else
- - strcpy (result, result + 1);
- + memmove(result, result + 1, strlen(result + 1) + 1);
- }
-
- return (result);
- diff --git a/lib/sh/pathphys.c b/lib/sh/pathphys.c
- index 26016b7..b64c4cd 100644
- --- a/lib/sh/pathphys.c
- +++ b/lib/sh/pathphys.c
- @@ -245,7 +245,7 @@ error:
- if (result[2] == '\0') /* short-circuit for bare `//' */
- result[1] = '\0';
- else
- - strcpy (result, result + 1);
- + memmove(result, result + 1, strlen(result + 1) + 1);
- }
-
- return (result);
- diff --git a/shell.c b/shell.c
- index b43de50..4aae182 100644
- --- a/shell.c
- +++ b/shell.c
- @@ -1948,8 +1948,10 @@ show_shell_usage (fp, extra)
- fputs (_("\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n"), fp);
-
- for (i = 0, set_opts = 0; shell_builtins[i].name; i++)
- - if (STREQ (shell_builtins[i].name, "set"))
- + if (STREQ (shell_builtins[i].name, "set")) {
- set_opts = savestring (shell_builtins[i].short_doc);
- + break;
- + }
- if (set_opts)
- {
- s = strchr (set_opts, '[');
- diff --git a/subst.c b/subst.c
- index 5f3e41e..7574617 100644
- --- a/subst.c
- +++ b/subst.c
- @@ -5182,8 +5182,11 @@ parameter_list_transform (xc, itype, quoted)
- list = list_rest_of_args ();
- if (list == 0)
- return ((char *)NULL);
- - if (xc == 'A')
- - return (pos_params_assignment (list, itype, quoted));
- + if (xc == 'A') {
- + ret = pos_params_assignment (list, itype, quoted);
- + dispose_words (list);
- + return (ret);
- + }
- ret = list_transform (xc, (SHELL_VAR *)0, list, itype, quoted);
- dispose_words (list);
- return (ret);
- @@ -6813,6 +6816,7 @@ parameter_brace_expand_rhs (name, value, c, quoted, pflags, qdollaratp, hasdolla
- {
- report_error (_("%s: invalid indirect expansion"), name);
- free (vname);
- + free (t1);
- dispose_word (w);
- return &expand_wdesc_error;
- }
- @@ -6820,6 +6824,7 @@ parameter_brace_expand_rhs (name, value, c, quoted, pflags, qdollaratp, hasdolla
- {
- report_error (_("%s: invalid variable name"), vname);
- free (vname);
- + free (t1);
- dispose_word (w);
- return &expand_wdesc_error;
- }
- diff --git a/support/man2html.c b/support/man2html.c
- index 6ba5061..1d9e376 100644
- --- a/support/man2html.c
- +++ b/support/man2html.c
- @@ -522,6 +522,7 @@ read_man_page(char *filename)
- man_buf[buf_size] = '\n';
- man_buf[buf_size + 1] = man_buf[buf_size + 2] = '\0';
- } else {
- + free (man_buf);
- man_buf = NULL;
- }
- fclose(man_stream);
- @@ -2562,7 +2563,6 @@ scan_request(char *c)
- h = name;
- if (stat(h, &stbuf) != -1)
- l = stbuf.st_size;
- - buf = stralloc(l + 4);
- #if NOCGI
- if (!out_length) {
- char *t, *s;
|