[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Assigning to BASHPID fails silently
From: |
Eduardo A . Bustamante López |
Subject: |
Re: Assigning to BASHPID fails silently |
Date: |
Tue, 18 Oct 2016 17:28:25 -0500 |
User-agent: |
Mutt/1.5.20 (2009-12-10) |
On Mon, Oct 17, 2016 at 08:38:29PM +0200, Martijn Dekker wrote:
[...]
The BASHPID variable is initialized with null_assign as its "assign_func". The
default value for this attribute in newly created variables is NULL.
The problem here is caused by the following code from variables.c (function is
bind_variable_internal):
2753 else if (entry->assign_func) /* array vars have assign functions
now */
2754 {
2755 INVALIDATE_EXPORTSTR (entry);
2756 newval = (aflags & ASS_APPEND) ? make_variable_value (entry,
value, aflags) : value;
2757 if (assoc_p (entry))
2758 entry = (*(entry->assign_func)) (entry, newval, -1, savestring
("0"));
2759 else if (array_p (entry))
2760 entry = (*(entry->assign_func)) (entry, newval, 0, 0);
2761 else
2762 entry = (*(entry->assign_func)) (entry, newval, -1, 0);
2763 if (newval != value)
2764 free (newval);
2765 return (entry);
2766 }
2767 else
2768 {
2769 assign_value:
2770 if ((readonly_p (entry) && (aflags & ASS_FORCE) == 0) ||
noassign_p (entry))
2771 {
2772 if (readonly_p (entry))
2773 err_readonly (name_cell (entry));
2774 return (entry);
2775 }
2776
2777 /* Variables which are bound are visible. */
2778 VUNSETATTR (entry, att_invisible);
If a variable has a non-NULL assign_func, it will not run the readonly_p
(entry) check, and therefore, no error message is printed. I'm not sure why the
code exits, but it seems clear to me that the assign_func should be NULL in
this case.
I attach a patch with the "fix" (disclaimer, I'm not sure this is the proper
fix, that's for Chet to decide).
Patched bash:
dualbus@yaqui:~/local/src/gnu/bash$ ./bash -c 'BASHPID=1; echo $?'
./bash: BASHPID: readonly variable
--
Eduardo Bustamante
https://dualbus.me/
init_bashpid.patch
Description: Text document
- Assigning to BASHPID fails silently, Martijn Dekker, 2016/10/17
- Re: Assigning to BASHPID fails silently,
Eduardo A . Bustamante López <=
- Re: Assigning to BASHPID fails silently, Chet Ramey, 2016/10/19
- Re: Assigning to BASHPID fails silently, Martijn Dekker, 2016/10/19
- Re: Assigning to BASHPID fails silently, Greg Wooledge, 2016/10/20
- Re: Assigning to BASHPID fails silently, Martijn Dekker, 2016/10/20
- Re: Assigning to BASHPID fails silently, lolilolicon, 2016/10/20
- Re: Assigning to BASHPID fails silently, lolilolicon, 2016/10/20
- Re: Assigning to BASHPID fails silently, Chet Ramey, 2016/10/20