X-Git-Url: https://git.decadent.org.uk/gitweb/?a=blobdiff_plain;f=support%2Fnfs%2Fexports.c;h=525e5b1d4286c997dcdb6f7e30daa7c0d8e02e0d;hb=cd436ed94c09f70065648d5fc480dcbfbe3f6713;hp=c82bb0ef29433048bf4b5b3e1eccecc0be9d79b5;hpb=173ac3ccb45cc407336dd363fc15c90bbfdecf6f;p=nfs-utils.git diff --git a/support/nfs/exports.c b/support/nfs/exports.c index c82bb0e..525e5b1 100644 --- a/support/nfs/exports.c +++ b/support/nfs/exports.c @@ -176,13 +176,8 @@ getexportent(int fromkernel, int fromexports) if (!has_default_opts) xlog(L_WARNING, "No options for %s %s: suggest %s(sync) to avoid warning", ee.e_path, exp, exp); } - if (strlen(hostname) >= sizeof(ee.e_hostname)) { - syntaxerr("client name too long"); - export_errno = EINVAL; - return NULL; - } - strncpy(ee.e_hostname, hostname, sizeof (ee.e_hostname) - 1); - ee.e_hostname[sizeof (ee.e_hostname) - 1] = '\0'; + xfree(ee.e_hostname); + ee.e_hostname = xstrdup(hostname); if (parseopts(opt, &ee, fromexports && !has_default_subtree_opts, NULL) < 0) return NULL; @@ -335,6 +330,7 @@ dupexportent(struct exportent *dst, struct exportent *src) dst->e_mountpoint = strdup(src->e_mountpoint); if (src->e_fslocdata) dst->e_fslocdata = strdup(src->e_fslocdata); + dst->e_hostname = NULL; } struct exportent * @@ -355,12 +351,9 @@ mkexportent(char *hname, char *path, char *options) ee.e_nsqgids = 0; ee.e_uuid = NULL; - if (strlen(hname) >= sizeof(ee.e_hostname)) { - xlog(L_WARNING, "client name %s too long", hname); - return NULL; - } - strncpy(ee.e_hostname, hname, sizeof (ee.e_hostname) - 1); - ee.e_hostname[sizeof (ee.e_hostname) - 1] = '\0'; + xfree(ee.e_hostname); + ee.e_hostname = xstrdup(hname); + if (strlen(path) >= sizeof(ee.e_path)) { xlog(L_WARNING, "path name %s too long", path); return NULL; @@ -648,6 +641,12 @@ bad_option: while (isblank(*cp)) cp++; } + /* + * Turn on nohide which will allow this export to cross over + * the 'mount --bind' mount point. + */ + if (ep->e_fslocdata) + ep->e_flags |= NFSEXP_NOHIDE; for (p = ep->e_secinfo; p->flav; p++) p->flags |= ep->e_flags & ~NFSEXP_SECINFO_FLAGS;