X-Git-Url: https://git.decadent.org.uk/gitweb/?p=nfs-utils.git;a=blobdiff_plain;f=support%2Fnfs%2Fclients.c;h=cb35d2ef5be056dd4ac275200393b41c146b3b7d;hp=b1970e0271a4acd1f17849fc8899a91219009fbe;hb=ebf259dfcee762c98ac530d558ca9126c983b1a5;hpb=8b7ad01b14df1e7529b9ba8a1ea17df0d6004ef9 diff --git a/support/nfs/clients.c b/support/nfs/clients.c index b1970e0..cb35d2e 100644 --- a/support/nfs/clients.c +++ b/support/nfs/clients.c @@ -18,6 +18,7 @@ #include "exportfs.h" #include "xio.h" +static char *cfname = NULL; static XFILE *cfp = NULL; static int *squash_uids = NULL, *squash_gids = NULL; @@ -46,6 +47,7 @@ setnfsclntent(char *fname) fname = _PATH_NFSCLIENTS; if ((cfp = xfopen(fname)) == NULL) xlog(L_ERROR, "can't open %s for reading", fname); + cfname = strdup(fname); } struct nfsclntent * @@ -75,8 +77,8 @@ again: cle.c_hostname[0] = '\0'; cle.c_fhkey.k_type = CLE_KEY_NONE; cle.c_mapping = CLE_MAP_IDENT; - cle.c_anonuid = -2; - cle.c_anongid = -2; + cle.c_anonuid = 65534; + cle.c_anongid = 65534; if (squash_uids) xfree(squash_uids); @@ -137,8 +139,9 @@ again: /* This is the anon entry */ if (!hosts) { if (strcmp(cle.c_tag, "anonymous")) { - xlog(L_ERROR, "nfsclients entry %s allows anonymous " - "access. Ignored.", cle.c_tag); + xlog(L_ERROR, + "%s:%d: entry %s allows anonymous access. Ignored.", + cfname, xfp->x_line, cle.c_tag); goto again; } return &cle; @@ -147,8 +150,9 @@ again: nexthost: if (*hostptr == ':' && strcmp(cle.c_tag, "anonymous")) { - xlog(L_ERROR, "nfsclients entry %s allows anonymous " - "access. Ignored.", cle.c_tag); + xlog(L_ERROR, + "%s:%d: entry %s allows anonymous access. Ignored.", + cfname, cfp->x_line, cle.c_tag); while (*hostptr == ':') hostptr++; } @@ -171,6 +175,8 @@ nexthost: void endnfsclntent(void) { + if (cfname) + free(cfname); if (cfp) xfclose(cfp); if (squash_uids) @@ -179,6 +185,7 @@ endnfsclntent(void) xfree(squash_gids); if (hosts) xfree(hosts); + cfname = NULL; cfp = NULL; squash_uids = NULL; squash_gids = NULL; @@ -307,7 +314,7 @@ getattr(char *attr, int alen, char *value, int vlen) xskip(cfp, " \t"); if ((ok = xgettok(cfp, '=', attr, alen)) < 0) - xlog(L_ERROR, "error parsing attribute"); + syntaxerr("missing attribute"); if (ok <= 0) return ok; xskip(cfp, " \t="); @@ -318,7 +325,7 @@ getattr(char *attr, int alen, char *value, int vlen) static void syntaxerr(char *msg) { - xlog(L_ERROR, "syntax error in nfsclients file (line %d): %s", - cfp->x_line, msg); + xlog(L_ERROR, "%s:%d: syntax error: %s", + cfname, cfp->x_line, msg); }