mirror of
https://github.com/VDR4Arch/vdr.git
synced 2023-10-10 13:36:52 +02:00
Implemented option --userdump
This commit is contained in:
parent
f54c810bcd
commit
e6f806d602
@ -2270,3 +2270,7 @@ Benjamin Hess <benjamin.h@gmx.ch>
|
||||
|
||||
Winfried Koehler <w_koehl@gmx.de>
|
||||
for fixing finding new transponders
|
||||
|
||||
Hans-Werner Hilse <hilse@web.de>
|
||||
for adding the command line option --userdump to enable core dumps in case VDR
|
||||
is run as root with option -u
|
||||
|
2
HISTORY
2
HISTORY
@ -5589,3 +5589,5 @@ Video Disk Recorder Revision History
|
||||
in version 1.7.0.
|
||||
Note that you may need to switch back to an older version of your channels.conf
|
||||
file if you have already used version 1.5.14, because it introduced new parameters.
|
||||
- Added the new command line option --userdump to enable core dumps in case VDR
|
||||
is run as root with option -u (thanks to Hans-Werner Hilse).
|
||||
|
5
vdr.1
5
vdr.1
@ -8,7 +8,7 @@
|
||||
.\" License as specified in the file COPYING that comes with the
|
||||
.\" vdr distribution.
|
||||
.\"
|
||||
.\" $Id: vdr.1 1.29 2007/02/24 17:40:20 kls Exp $
|
||||
.\" $Id: vdr.1 1.30 2008/02/08 15:55:26 kls Exp $
|
||||
.\"
|
||||
.TH vdr 1 "07 Jan 2007" "1.4.5" "Video Disk Recorder"
|
||||
.SH NAME
|
||||
@ -139,6 +139,9 @@ be set from the transponder data, but for security reasons
|
||||
vdr can switch to a lesser privileged user id during normal
|
||||
operation.
|
||||
.TP
|
||||
.BI \-\-userdump
|
||||
allow coredumps if -u is given (only for debugging).
|
||||
.TP
|
||||
.BI \-\-vfat
|
||||
Encode special characters in recording names to avoid problems
|
||||
with VFAT file systems.
|
||||
|
16
vdr.c
16
vdr.c
@ -22,7 +22,7 @@
|
||||
*
|
||||
* The project's page is at http://www.cadsoft.de/vdr
|
||||
*
|
||||
* $Id: vdr.c 1.307 2008/01/27 14:38:45 kls Exp $
|
||||
* $Id: vdr.c 1.308 2008/02/08 15:55:30 kls Exp $
|
||||
*/
|
||||
|
||||
#include <getopt.h>
|
||||
@ -86,7 +86,7 @@
|
||||
|
||||
static int LastSignal = 0;
|
||||
|
||||
static bool SetUser(const char *UserName)
|
||||
static bool SetUser(const char *UserName, bool UserDump)//XXX name?
|
||||
{
|
||||
if (UserName) {
|
||||
struct passwd *user = getpwnam(UserName);
|
||||
@ -106,10 +106,8 @@ static bool SetUser(const char *UserName)
|
||||
fprintf(stderr, "vdr: cannot set user id %u: %s\n", (unsigned int)user->pw_uid, strerror(errno));
|
||||
return false;
|
||||
}
|
||||
if (prctl(PR_SET_DUMPABLE, 2, 0, 0, 0) < 0) {
|
||||
if (UserDump && prctl(PR_SET_DUMPABLE, 1, 0, 0, 0) < 0)
|
||||
fprintf(stderr, "vdr: warning - cannot set dumpable: %s\n", strerror(errno));
|
||||
// always non-fatal, and will not work with kernel < 2.6.13
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
@ -187,6 +185,7 @@ int main(int argc, char *argv[])
|
||||
|
||||
bool StartedAsRoot = false;
|
||||
const char *VdrUser = NULL;
|
||||
bool UserDump = false;
|
||||
int SVDRPport = DEFAULTSVDRPPORT;
|
||||
const char *AudioCommand = NULL;
|
||||
const char *ConfigDirectory = NULL;
|
||||
@ -241,6 +240,7 @@ int main(int argc, char *argv[])
|
||||
{ "shutdown", required_argument, NULL, 's' },
|
||||
{ "terminal", required_argument, NULL, 't' },
|
||||
{ "user", required_argument, NULL, 'u' },
|
||||
{ "userdump", no_argument, NULL, 'u' | 0x100 },
|
||||
{ "version", no_argument, NULL, 'V' },
|
||||
{ "vfat", no_argument, NULL, 'v' | 0x100 },
|
||||
{ "video", required_argument, NULL, 'v' },
|
||||
@ -346,6 +346,9 @@ int main(int argc, char *argv[])
|
||||
case 'u': if (*optarg)
|
||||
VdrUser = optarg;
|
||||
break;
|
||||
case 'u' | 0x100:
|
||||
UserDump = true;
|
||||
break;
|
||||
case 'V': DisplayVersion = true;
|
||||
break;
|
||||
case 'v' | 0x100:
|
||||
@ -376,7 +379,7 @@ int main(int argc, char *argv[])
|
||||
if (strcmp(VdrUser, "root")) {
|
||||
if (!SetKeepCaps(true))
|
||||
return 2;
|
||||
if (!SetUser(VdrUser))
|
||||
if (!SetUser(VdrUser, UserDump))
|
||||
return 2;
|
||||
if (!SetKeepCaps(false))
|
||||
return 2;
|
||||
@ -431,6 +434,7 @@ int main(int argc, char *argv[])
|
||||
" -t TTY, --terminal=TTY controlling tty\n"
|
||||
" -u USER, --user=USER run as user USER; only applicable if started as\n"
|
||||
" root\n"
|
||||
" --userdump allow coredumps if -u is given (debugging)\n"
|
||||
" -v DIR, --video=DIR use DIR as video directory (default: %s)\n"
|
||||
" -V, --version print version information and exit\n"
|
||||
" --vfat encode special characters in recording names to\n"
|
||||
|
Loading…
Reference in New Issue
Block a user