Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 28 Nov 2016 14:40:45 +0800
From:      iblis <iblis@hs.ntnu.edu.tw>
To:        cem@freebsd.org
Cc:        FreeBSD Current <freebsd-current@freebsd.org>
Subject:   Re: r308432: Capsicumized `basename` make zsh prompt broken
Message-ID:  <e112d5d1-a64e-9647-8b1a-96461bf84d6f@hs.ntnu.edu.tw>
In-Reply-To: <CAG6CVpUbRq-%2BY8akXRsKqt6NvWuoPJKnfCJ2dzK1cVRHxGc0Sw@mail.gmail.com>
References:  <5874fe09-4261-5616-9c0a-a71581c4d548@hs.ntnu.edu.tw> <CAG6CVpUbRq-%2BY8akXRsKqt6NvWuoPJKnfCJ2dzK1cVRHxGc0Sw@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
Hi Conrad,
    Thanks for your reply.

    I revert the basename.c and `< /dev/null` do the trick!
    I'm also curious that will `caph_limit_stdio` break lots of program 
work with some shell scripts?

-- 
Iblis Lin

On 11/28/2016 12: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@hs.ntnu.edu.tw> wrote:
>> Hi,
>> Here is a minimal config of zsh prompt invoking `basename`:
>> ```
>> └─[iblis@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@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)
>> @@ -65,7 +65,7 @@
>>
>> 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@freebsd.org mailing list
>> https://lists.freebsd.org/mailman/listinfo/freebsd-current
>> To unsubscribe, send any mail to "freebsd-current-unsubscribe@freebsd.org"
> _______________________________________________
> freebsd-current@freebsd.org mailing list
> https://lists.freebsd.org/mailman/listinfo/freebsd-current
> To unsubscribe, send any mail to "freebsd-current-unsubscribe@freebsd.org"
>




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?e112d5d1-a64e-9647-8b1a-96461bf84d6f>