X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=lib%2Finit.c;h=df3c2aa2bd90cc25a7302907428c362648f7b85e;hb=9126c9c0366028cb799978d145fd361c6635b5f4;hp=bb2fe17bd00ef48306cb716df5b2f37d09580a81;hpb=1c8b4547cee99df587ed6b5d0112ab3f48d6534d;p=deb_libnfs.git diff --git a/lib/init.c b/lib/init.c index bb2fe17..df3c2aa 100644 --- a/lib/init.c +++ b/lib/init.c @@ -74,6 +74,13 @@ struct rpc_context *rpc_init_context(void) salt += 0x01000000; rpc->fd = -1; rpc->tcp_syncnt = RPC_PARAM_UNDEFINED; +#ifdef WIN32 + rpc->uid = 65534; + rpc->gid = 65534; +#else + rpc->uid = getuid(); + rpc->gid = getgid(); +#endif return rpc; } @@ -101,6 +108,24 @@ void rpc_set_auth(struct rpc_context *rpc, struct AUTH *auth) rpc->auth = auth; } +static void rpc_set_uid_gid(struct rpc_context *rpc, int uid, int gid) { + if (uid != rpc->uid || gid != rpc->gid) { + struct AUTH *auth = libnfs_authunix_create("libnfs", uid, gid, 0, NULL); + if (auth != NULL) { + rpc_set_auth(rpc, auth); + rpc->uid = uid; + rpc->gid = gid; + } + } +} + +void rpc_set_uid(struct rpc_context *rpc, int uid) { + rpc_set_uid_gid(rpc, uid, rpc->gid); +} + +void rpc_set_gid(struct rpc_context *rpc, int gid) { + rpc_set_uid_gid(rpc, rpc->uid, gid); +} void rpc_set_error(struct rpc_context *rpc, char *error_string, ...) {