[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: segfaults with function attribute manipulations
From: |
Chet Ramey |
Subject: |
Re: segfaults with function attribute manipulations |
Date: |
Tue, 8 Jan 2019 16:27:21 -0500 |
User-agent: |
Mozilla/5.0 (Macintosh; Intel Mac OS X 10.13; rv:60.0) Gecko/20100101 Thunderbird/60.4.0 |
On 1/8/19 4:36 AM, Grisha Levit wrote:
> A couple silly function attribute manipulations lead to situations that
> result in segfaults:
Thanks for the report.
>
> $ f() { :; }; declare -Af f; declare -pf f
> [ segfault ]
>
> diff --git a/builtins/setattr.def b/builtins/setattr.def
> index 251bcacb..1a828291 100644
> --- a/builtins/setattr.def
> +++ b/builtins/setattr.def
> @@ -474,9 +474,9 @@ show_var_attributes (var, pattr, nodefs)
> #if defined (ARRAY_VARS)
> if (invisible_p (var) && (array_p (var) || assoc_p (var)))
> printf ("%s\n", var->name);
> - else if (array_p (var))
> + else if (array_p (var) && function_p (var) == 0)
> print_array_assignment (var, 0);
> - else if (assoc_p (var))
> + else if (assoc_p (var) && function_p (var) == 0)
> print_assoc_assignment (var, 0);
> else
> #endif
>
> (Maybe the better solution would be to prevent meaningless attributes from
> getting assigned to functions in the first place, but they seem harmless
> otherwise).
I prefer:
$ ./bash ./x19
./x19: line 1: declare: f: -A? Oh, come on.
f ()
{
:
}
--
``The lyf so short, the craft so long to lerne.'' - Chaucer
``Ars longa, vita brevis'' - Hippocrates
Chet Ramey, UTech, CWRU chet@case.edu http://tiswww.cwru.edu/~chet/