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_at_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_at_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 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_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" >>> >>Received on Thu Dec 01 2016 - 16:30:34 UTC
This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:41:09 UTC