X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=common-src%2Flocal-security.c;h=9a27dff4099ad5ac2a4b6cdf9b7d30181749c415;hb=HEAD;hp=6a8b8a4da617eabf41e6299444afc4ec82349940;hpb=fd48f3e498442f0cbff5f3606c7c403d0566150e;p=debian%2Famanda diff --git a/common-src/local-security.c b/common-src/local-security.c index 6a8b8a4..9a27dff 100644 --- a/common-src/local-security.c +++ b/common-src/local-security.c @@ -61,6 +61,7 @@ const security_driver_t local_security_driver = { "LOCAL", local_connect, sec_accept, + sec_get_authenticated_peer_name_gethostname, sec_close, stream_sendpkt, stream_recvpkt, @@ -110,7 +111,7 @@ local_connect( auth_debug(1, _("local: local_connect: %s\n"), hostname); - rh = alloc(SIZEOF(*rh)); + rh = g_new0(struct sec_handle, 1); security_handleinit(&rh->sech, &local_security_driver); rh->hostname = NULL; rh->rs = NULL; @@ -245,20 +246,25 @@ runlocal( /* drop root privs for good */ set_root_privs(-1); - safe_fd(-1, 0); - if(!xamandad_path || strlen(xamandad_path) <= 1) xamandad_path = vstralloc(amlibexecdir, "/", "amandad", NULL); #ifndef SINGLE_USERID + if (client_username && *client_username != '\0') { + initgroups(client_username, gid); + } else { + initgroups(CLIENT_LOGIN, gid); + } + if (gid != 0) + setregid(uid, gid); if (uid != 0) setreuid(uid, uid); - if (gid != 0) - setregid(gid, gid); #endif + safe_fd(-1, 0); + execlp(xamandad_path, xamandad_path, - "-auth=local", "amdump", "amindexd", "amidxtaped", (char *)NULL); + "-auth=local", (char *)NULL); error(_("error: couldn't exec %s: %s"), xamandad_path, strerror(errno)); /* should never go here, shut up compiler warning */