Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 1 Dec 2016 09:30:26 -0800
From:      Conrad Meyer <cem@freebsd.org>
To:        iblis <iblis@hs.ntnu.edu.tw>
Cc:        FreeBSD Current <freebsd-current@freebsd.org>
Subject:   Re: r308432: Capsicumized `basename` make zsh prompt broken
Message-ID:  <CAG6CVpVkUkU2=-=QQpH9-AKaXQEza5hifVUQtK%2B1%2B5EKHEguFg@mail.gmail.com>
In-Reply-To: <CAG6CVpWxqnWNcehPWo8N18ZwffDfptL%2BtnMBg9KR9mre4DCjtQ@mail.gmail.com>
References:  <5874fe09-4261-5616-9c0a-a71581c4d548@hs.ntnu.edu.tw> <CAG6CVpUbRq-%2BY8akXRsKqt6NvWuoPJKnfCJ2dzK1cVRHxGc0Sw@mail.gmail.com> <e112d5d1-a64e-9647-8b1a-96461bf84d6f@hs.ntnu.edu.tw> <CAG6CVpWxqnWNcehPWo8N18ZwffDfptL%2BtnMBg9KR9mre4DCjtQ@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
Hello Iblis,

Please try reinstalling libcapsicum after r309366, rebuilding
basename, and then removing the stdout kludge from your shell script.
Let me know if there's still a problem!

Thanks,
Conrad

On Sun, Nov 27, 2016 at 11:08 PM, Conrad Meyer <cem@freebsd.org> wrote:
> Hi Iblis,
>
> Yes, I think caph_limit_stdio will break many similar programs in
> similar use.  I think we'll need to change that behavior.  Something
> like this:
>
> https://reviews.freebsd.org/D8657
>
> Best,
> Conrad
>
> On Sun, Nov 27, 2016 at 10:40 PM, iblis <iblis@hs.ntnu.edu.tw> wrote:
>> 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 w=
ork
>> 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=3D"$(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`:
>>>> ```
>>>> =E2=94=94=E2=94=80[iblis@abeing]% cat /home/ib-test/.zshenv
>>>>
>>>> function set_prompt {
>>>>     prompt=3D"$(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:
>>>>
>>>> ```
>>>> =E2=94=94=E2=94=80[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
>>>> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
>>>> --- basename.c (revision 309213)
>>>> +++ basename.c (working copy)
>>>> @@ -65,7 +65,7 @@
>>>>
>>>> setlocale(LC_ALL, "");
>>>>
>>>> - if (caph_limit_stdio() < 0 || (cap_enter() < 0 && errno !=3D ENOSYS)=
)
>>>> + if (cap_enter() < 0 && errno !=3D ENOSYS)
>>>> err(1, "capsicum");
>>>>
>>>> aflag =3D 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.o=
rg"
>>>
>>



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAG6CVpVkUkU2=-=QQpH9-AKaXQEza5hifVUQtK%2B1%2B5EKHEguFg>