Re: r308432: Capsicumized `basename` make zsh prompt broken

From: Baptiste Daroussin <bapt_at_freebsd.org>
Date: Mon, 28 Nov 2016 08:21:21 +0100
On Mon, Nov 28, 2016 at 02:05:49AM -0500, Allan Jude wrote:
> On 2016-11-27 23:55, Conrad Meyer wrote:
> > Hi Iblis,
> > 
> > I see no such problem running 'basename $HOME' in a normal shell environment:
> > 
> >> $ basename $HOME
> >> cmeyer
> > 
> > I suppose in your use, perhaps stdin is already closed?  I think this
> > is a limitation of caph_limit_stdio() in general.
> > 
> > Can you try instead:
> > 
> > function set_prompt {
> >     prompt="$(basename $HOME < /dev/null) >"
> > }
> > 
> > And see if it resolves the issue?
> > 
> > Thanks,
> > Conrad
> > 
> > On Sun, Nov 27, 2016 at 8:33 PM, iblis <iblis_at_hs.ntnu.edu.tw> wrote:
> >> Hi,
> >> Here is a minimal config of zsh prompt invoking `basename`:
> >> ```
> >> └─[iblis_at_abeing]% cat /home/ib-test/.zshenv
> >>
> >> function set_prompt {
> >>     prompt="$(basename $HOME) >"
> >> }
> >>
> >> function zle-line-init zle-keymap-select {
> >>         set_prompt
> >>         zle reset-prompt
> >> }
> >>
> >> zle -N zle-line-init
> >> zle -N zle-keymap-select
> >>
> >> set_prompt
> >> ```
> >>
> >> and launching zsh will get something like this:
> >>
> >> ```
> >> └─[iblis_at_abeing]% sudo su ib-test
> >>
> >> ib-test >basename: capsicum: Bad file descriptor
> >>>
> >>> basename: capsicum: Bad file descriptor
> >>>
> >> ```
> >>
> >>
> >> To be honest, I have no idea about what casper/caspicum is. I just changed
> >> the `basename.c` and zsh work again.
> >>
> >> Index: basename.c
> >> ===================================================================
> >> --- basename.c (revision 309213)
> >> +++ basename.c (working copy)
> >> _at__at_ -65,7 +65,7 _at__at_
> >>
> >> setlocale(LC_ALL, "");
> >>
> >> - if (caph_limit_stdio() < 0 || (cap_enter() < 0 && errno != ENOSYS))
> >> + if (cap_enter() < 0 && errno != ENOSYS)
> >> err(1, "capsicum");
> >>
> >> aflag = 0;
> >>
> >>
> >> Any idea?
> >>
> >> --
> >> Iblis Lin
> >> _______________________________________________
> >> freebsd-current_at_freebsd.org mailing list
> >> https://lists.freebsd.org/mailman/listinfo/freebsd-current
> >> To unsubscribe, send any mail to "freebsd-current-unsubscribe_at_freebsd.org"
> > _______________________________________________
> > freebsd-current_at_freebsd.org mailing list
> > https://lists.freebsd.org/mailman/listinfo/freebsd-current
> > To unsubscribe, send any mail to "freebsd-current-unsubscribe_at_freebsd.org"
> > 
> 
> IIRC, bapt_at_ specifically mentioned this case in the review for
> caph_limit_stdio() or one of the reviews that lead to the creation of
> the helpers.

I mention this is the review of the cap_helpers themselves. I still think
caph_limit_stdio should grow a flag for testing that. I figured out the issue
based on one of the conversion to capsicum by Conrad on I don't remember which
tool.

Bapt

Received on Mon Nov 28 2016 - 06:21:25 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:41:09 UTC