git: calendar(1): Use login caps for 'calendar -a'
Aaron LI
aly at crater.dragonflybsd.org
Sat Nov 9 21:11:53 PST 2019
commit f8b849d1082177cbfa11f941feeeced54815dc56
Author: Aaron LI <aly at aaronly.me>
Date: Sat Nov 9 21:49:18 2019 +0800
calendar(1): Use login caps for 'calendar -a'
* Use 'fork()' and 'setusercontext(LOGIN_SETALL)' for every user. With
this change, the complex function 'cal()' that parses user-owned
calendars is now executed with appropriate user privileges.
Previously it was run with privileges dropped only temporary for
execution of 'cal()', and fully dropped only before invoking 'sendmail'.
* In 'calendar -a' mode, the 'getenv("HOME")' in 'cal_fopen()' function
always returns the root's home directory instead of the current user's
home (after fork() and setusercontext()), which makes 'chdir(home)'
fail.
Fix this issue by moving the 'chdir(home)' to the 'main()' function in
'calendar.c'. In the meantime, back to home directory in
'cal_fopen()' function after opening the calendar file.
Partially based on FreeBSD's commit:
https://github.com/freebsd/freebsd/commit/7ff75f4a5a3d9ada5bd68384fdded357fa4c1105
Summary of changes:
usr.bin/calendar/Makefile | 4 +--
usr.bin/calendar/calendar.c | 44 ++++++++++++++++++++-------------
usr.bin/calendar/io.c | 60 ++++++++++++---------------------------------
3 files changed, 44 insertions(+), 64 deletions(-)
http://gitweb.dragonflybsd.org/dragonfly.git/commitdiff/f8b849d1082177cbfa11f941feeeced54815dc56
--
DragonFly BSD source repository
More information about the Commits
mailing list