[BusyBox-cvs] CVS update of busybox/util-linux (nfsmount.c)

Erik Andersen andersen at codepoet.org
Mon Jul 26 12:05:13 UTC 2004


    Date: Monday, July 26, 2004 @ 06:05:13
  Author: andersen
    Path: /var/cvs/busybox/util-linux

Modified: nfsmount.c (1.27 -> 1.28)

YAEGASHI Takeshi writes:

Hi,

With the following /etc/fstab (any two or more lines of nfs), mount -a
-t nfs causes a segmentation faults.

server:/exports/aaa /mnt/aaa nfs defaults 0 0
server:/exprots/bbb /mnt/bbb nfs defaults 0 0

In util-linux/nfsmount.c, it overwrites malloc'ed pointer *mount_opts
with a static pointer.  With this patch it does proper memory realloc
and data copy instead.


Index: busybox/util-linux/nfsmount.c
diff -u busybox/util-linux/nfsmount.c:1.27 busybox/util-linux/nfsmount.c:1.28
--- busybox/util-linux/nfsmount.c:1.27	Mon Mar 15 01:29:22 2004
+++ busybox/util-linux/nfsmount.c	Mon Jul 26 06:05:12 2004
@@ -315,7 +315,7 @@
 	char new_opts[1024];
 	struct timeval total_timeout;
 	enum clnt_stat clnt_stat;
-	static struct nfs_mount_data data;
+	struct nfs_mount_data data;
 	char *opt, *opteq;
 	int val;
 	struct hostent *hp;
@@ -602,10 +602,9 @@
 #endif
 
 	data.version = nfs_mount_version;
-	*mount_opts = (char *) &data;
 
 	if (*flags & MS_REMOUNT)
-		return 0;
+		goto copy_data_and_return;
 
 	/*
 	 * If the previous mount operation on the same host was
@@ -857,6 +856,9 @@
 	auth_destroy(mclient->cl_auth);
 	clnt_destroy(mclient);
 	close(msock);
+copy_data_and_return:
+	*mount_opts = xrealloc(*mount_opts, sizeof(data));
+	memcpy(*mount_opts, &data, sizeof(data));
 	return 0;
 
 	/* abort */



More information about the busybox-cvs mailing list