Hi, I think there is a bug in the RW access check for a terminal given with commandline option -t. The check is performed before VDR actualy switches his uid, so if the user which starts VDR has access rights and the effective vdr user doesn't have, the check is useless. In addition VDR should check the return value of freopen() when claiming the terminal later on.
The current code segfaults on the first terminal access (e.g. printf), if the effective vdr user doesn't have sufficient rights.
Regards.
On 04/07/07 15:05, Stefan Huelswitt wrote:
Hi, I think there is a bug in the RW access check for a terminal given with commandline option -t. The check is performed before VDR actualy switches his uid, so if the user which starts VDR has access rights and the effective vdr user doesn't have, the check is useless. In addition VDR should check the return value of freopen() when claiming the terminal later on.
The current code segfaults on the first terminal access (e.g. printf), if the effective vdr user doesn't have sufficient rights.
Can you please provide a tested patch against version 1.4.6 for this?
Klaus
On 29 Apr 2007 Klaus Schmidinger Klaus.Schmidinger@cadsoft.de wrote:
On 04/07/07 15:05, Stefan Huelswitt wrote:
Hi, I think there is a bug in the RW access check for a terminal given with commandline option -t. The check is performed before VDR actualy switches his uid, so if the user which starts VDR has access rights and the effective vdr user doesn't have, the check is useless. In addition VDR should check the return value of freopen() when claiming the terminal later on.
The current code segfaults on the first terminal access (e.g. printf), if the effective vdr user doesn't have sufficient rights.
Can you please provide a tested patch against version 1.4.6 for this?
Sorry, I didn't care to patch the issue until now. Once you know the effect it can easily be avoided.
I think the best is to move all the access checks (terminal, configdir) out of the options loop and place them after the uid switch. Checking the freopen() is trivia.
Regards.
Stefan Huelswitt wrote:
The current code segfaults on the first terminal access (e.g. printf), if the effective vdr user doesn't have sufficient rights.
Just a thought, would it work to open the terminal before switching the user? Or is the access rights status checked again later on?
(/me was struck by this too after upgrading my debian)
Cheers,
Udo