X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=amandad-src%2Famandad.c;h=8d9b3d6b680133603cc551655523d55d9fde2b91;hb=96f35b20267e8b1a1c846d476f27fcd330e0b018;hp=7591705898b1e11c2c1ea33a334c9f5a8745d2d3;hpb=d74dc4d908fcbc1a4ef474edaf51e61ec90eab6b;p=debian%2Famanda diff --git a/amandad-src/amandad.c b/amandad-src/amandad.c index 7591705..8d9b3d6 100644 --- a/amandad-src/amandad.c +++ b/amandad-src/amandad.c @@ -445,12 +445,19 @@ main( if (getuid() == 0) { if (strcasecmp(auth, "krb5") != 0) { - error(_("Amanda must be run as user '%s' when using '%s' authentication"), - CLIENT_LOGIN, auth); + struct passwd *pwd; + /* lookup our local user name */ + if ((pwd = getpwnam(CLIENT_LOGIN)) == NULL) { + error(_("getpwnam(%s) failed."), CLIENT_LOGIN); + } + if (pwd->pw_uid != 0) { + error(_("'amandad' must be run as user '%s' when using '%s' authentication"), + CLIENT_LOGIN, auth); + } } } else { if (strcasecmp(auth, "krb5") == 0) { - error(_("Amanda must be run as user 'root' when using 'krb5' authentication")); + error(_("'amandad' must be run as user 'root' when using 'krb5' authentication")); } } @@ -1670,6 +1677,21 @@ service_new( data_write[i + 1][0] = newfd; } } + while(data_write[4][0] >= DATA_FD_OFFSET && + data_write[4][0] <= DATA_FD_OFFSET + DATA_FD_COUNT*2 - 1) { + newfd = dup(data_write[4][0]); + if (newfd == -1) + error(_("Can't dup out off DATA_FD range")); + data_write[4][0] = newfd; + } + while(data_write[4][1] >= DATA_FD_OFFSET && + data_write[4][1] <= DATA_FD_OFFSET + DATA_FD_COUNT*2 - 1) { + newfd = dup(data_write[4][1]); + if (newfd == -1) + error(_("Can't dup out off DATA_FD range")); + data_write[4][1] = newfd; + } + for (i = 0; i < DATA_FD_COUNT*2; i++) close(DATA_FD_OFFSET + i);