View | Details | Raw Unified | Return to bug 26320
Collapse All | Expand All

(-)mountd.c (-9 / +36 lines)
Lines 191-201 Link Here
191
void	nextfield __P((char **, char **));
191
void	nextfield __P((char **, char **));
192
void	out_of_mem __P((void));
192
void	out_of_mem __P((void));
193
void	parsecred __P((char *, struct ucred *));
193
void	parsecred __P((char *, struct ucred *));
194
int	put_exlist __P((struct dirlist *, XDR *, struct dirlist *, int *));
194
int	put_exlist __P((struct dirlist *, XDR *, struct dirlist *, int *,int));
195
int	scan_tree __P((struct dirlist *, u_int32_t));
195
int	scan_tree __P((struct dirlist *, u_int32_t));
196
static void usage __P((void));
196
static void usage __P((void));
197
int	xdr_dir __P((XDR *, char *));
197
int	xdr_dir __P((XDR *, char *));
198
int	xdr_explist __P((XDR *, caddr_t));
198
int	xdr_explist __P((XDR *, caddr_t));
199
int	xdr_explist_brief __P((XDR *, caddr_t));
199
int	xdr_fhs __P((XDR *, caddr_t));
200
int	xdr_fhs __P((XDR *, caddr_t));
200
int	xdr_mlist __P((XDR *, caddr_t));
201
int	xdr_mlist __P((XDR *, caddr_t));
201
202
Lines 542-548 Link Here
542
		return;
543
		return;
543
	case RPCMNT_EXPORT:
544
	case RPCMNT_EXPORT:
544
		if (!svc_sendreply(transp, xdr_explist, (caddr_t)NULL))
545
		if (!svc_sendreply(transp, xdr_explist, (caddr_t)NULL))
545
			syslog(LOG_ERR, "can't send reply");
546
			if (!svc_sendreply(transp, xdr_explist_brief, (caddr_t)NULL))
547
				syslog(LOG_ERR, "can't send reply");
546
		if (log)
548
		if (log)
547
			syslog(LOG_NOTICE,
549
			syslog(LOG_NOTICE,
548
			    "export request succeeded from %s",
550
			    "export request succeeded from %s",
Lines 630-638 Link Here
630
 * Xdr conversion for export list
632
 * Xdr conversion for export list
631
 */
633
 */
632
int
634
int
633
xdr_explist(xdrsp, cp)
635
xdr_explist_common(xdrsp, cp, brief)
634
	XDR *xdrsp;
636
	XDR *xdrsp;
635
	caddr_t cp;
637
	caddr_t cp;
638
	int brief;
636
{
639
{
637
	struct exportlist *ep;
640
	struct exportlist *ep;
638
	int false = 0;
641
	int false = 0;
Lines 645-655 Link Here
645
	ep = exphead;
648
	ep = exphead;
646
	while (ep) {
649
	while (ep) {
647
		putdef = 0;
650
		putdef = 0;
648
		if (put_exlist(ep->ex_dirl, xdrsp, ep->ex_defdir, &putdef))
651
		if (put_exlist(ep->ex_dirl, xdrsp, ep->ex_defdir,
652
			       &putdef, brief))
649
			goto errout;
653
			goto errout;
650
		if (ep->ex_defdir && putdef == 0 &&
654
		if (ep->ex_defdir && putdef == 0 &&
651
			put_exlist(ep->ex_defdir, xdrsp, (struct dirlist *)NULL,
655
			put_exlist(ep->ex_defdir, xdrsp, (struct dirlist *)NULL,
652
			&putdef))
656
			&putdef, brief))
653
			goto errout;
657
			goto errout;
654
		ep = ep->ex_next;
658
		ep = ep->ex_next;
655
	}
659
	}
Lines 667-677 Link Here
667
 * directory paths.
671
 * directory paths.
668
 */
672
 */
669
int
673
int
670
put_exlist(dp, xdrsp, adp, putdefp)
674
put_exlist(dp, xdrsp, adp, putdefp, brief)
671
	struct dirlist *dp;
675
	struct dirlist *dp;
672
	XDR *xdrsp;
676
	XDR *xdrsp;
673
	struct dirlist *adp;
677
	struct dirlist *adp;
674
	int *putdefp;
678
	int *putdefp;
679
	int brief;
675
{
680
{
676
	struct grouplist *grp;
681
	struct grouplist *grp;
677
	struct hostlist *hp;
682
	struct hostlist *hp;
Lines 681-687 Link Here
681
	char *strp;
686
	char *strp;
682
687
683
	if (dp) {
688
	if (dp) {
684
		if (put_exlist(dp->dp_left, xdrsp, adp, putdefp))
689
		if (put_exlist(dp->dp_left, xdrsp, adp, putdefp, brief))
685
			return (1);
690
			return (1);
686
		if (!xdr_bool(xdrsp, &true))
691
		if (!xdr_bool(xdrsp, &true))
687
			return (1);
692
			return (1);
Lines 692-698 Link Here
692
			gotalldir = 1;
697
			gotalldir = 1;
693
			*putdefp = 1;
698
			*putdefp = 1;
694
		}
699
		}
695
		if ((dp->dp_flag & DP_DEFSET) == 0 &&
700
		if (brief) {
701
			if (!xdr_bool(xdrsp, &true))
702
				return (1);
703
			strp = "(...)";
704
			if (!xdr_string(xdrsp, &strp, RPCMNT_PATHLEN))
705
				return (1);
706
		} else if ((dp->dp_flag & DP_DEFSET) == 0 &&
696
		    (gotalldir == 0 || (adp->dp_flag & DP_DEFSET) == 0)) {
707
		    (gotalldir == 0 || (adp->dp_flag & DP_DEFSET) == 0)) {
697
			hp = dp->dp_hosts;
708
			hp = dp->dp_hosts;
698
			while (hp) {
709
			while (hp) {
Lines 721-730 Link Here
721
		}
732
		}
722
		if (!xdr_bool(xdrsp, &false))
733
		if (!xdr_bool(xdrsp, &false))
723
			return (1);
734
			return (1);
724
		if (put_exlist(dp->dp_right, xdrsp, adp, putdefp))
735
		if (put_exlist(dp->dp_right, xdrsp, adp, putdefp, brief))
725
			return (1);
736
			return (1);
726
	}
737
	}
727
	return (0);
738
	return (0);
739
}
740
741
int
742
xdr_explist(xdrsp, cp)
743
	XDR *xdrsp;
744
	caddr_t cp;
745
{
746
	return xdr_explist_common(xdrsp, cp, 0 /* !brief */);
747
}
748
749
int
750
xdr_explist_brief(xdrsp, cp)
751
	XDR *xdrsp;
752
	caddr_t cp;
753
{
754
	return xdr_explist_common(xdrsp, cp, 1 /* brief */);
728
}
755
}
729
756
730
#define LINESIZ	10240
757
#define LINESIZ	10240

Return to bug 26320