public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH] nfs client, kernel 2.4.31: readlink result overflow
@ 2005-09-12 13:26 Assar
  2005-09-12 18:46 ` Valdis.Kletnieks
  0 siblings, 1 reply; 21+ messages in thread
From: Assar @ 2005-09-12 13:26 UTC (permalink / raw)
  To: linux-kernel; +Cc: marcelo.tosatti

In 2.4.31, the v2/3 nfs readlink accepts too long symlinks.
I have tested this by having a server return long symlinks.
2.6.13 does not to my reading have this problem.

diff -u linux-2.4.31.orig/fs/nfs/nfs2xdr.c linux-2.4.31/fs/nfs/nfs2xdr.c
--- linux-2.4.31.orig/fs/nfs/nfs2xdr.c	2002-11-28 18:53:15.000000000 -0500
+++ linux-2.4.31/fs/nfs/nfs2xdr.c	2005-09-07 17:36:04.000000000 -0400
@@ -571,8 +571,8 @@
 	strlen = (u32*)kmap(rcvbuf->pages[0]);
 	/* Convert length of symlink */
 	len = ntohl(*strlen);
-	if (len > rcvbuf->page_len)
-		len = rcvbuf->page_len;
+	if (len > rcvbuf->page_len - 1 - 4)
+		len = rcvbuf->page_len - 1 - 4;
 	*strlen = len;
 	/* NULL terminate the string we got */
 	string = (char *)(strlen + 1);
diff -u linux-2.4.31.orig/fs/nfs/nfs3xdr.c linux-2.4.31/fs/nfs/nfs3xdr.c
--- linux-2.4.31.orig/fs/nfs/nfs3xdr.c	2003-11-28 13:26:21.000000000 -0500
+++ linux-2.4.31/fs/nfs/nfs3xdr.c	2005-09-07 17:53:10.000000000 -0400
@@ -759,8 +759,8 @@
 	strlen = (u32*)kmap(rcvbuf->pages[0]);
 	/* Convert length of symlink */
 	len = ntohl(*strlen);
-	if (len > rcvbuf->page_len)
-		len = rcvbuf->page_len;
+	if (len > rcvbuf->page_len - 1 - 4)
+		len = rcvbuf->page_len - 1 - 4;
 	*strlen = len;
 	/* NULL terminate the string we got */
 	string = (char *)(strlen + 1);

^ permalink raw reply	[flat|nested] 21+ messages in thread

end of thread, other threads:[~2005-09-14 22:33 UTC | newest]

Thread overview: 21+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2005-09-12 13:26 [PATCH] nfs client, kernel 2.4.31: readlink result overflow Assar
2005-09-12 18:46 ` Valdis.Kletnieks
2005-09-12 19:37   ` Assar
2005-09-12 20:01     ` Valdis.Kletnieks
2005-09-12 20:41       ` Assar
2005-09-12 20:53         ` Valdis.Kletnieks
2005-09-13 18:39         ` Marcelo Tosatti
2005-09-13 18:52           ` Assar
2005-09-13 19:35             ` Marcelo Tosatti
2005-09-13 20:01               ` Assar
2005-09-14 18:55                 ` Peter Staubach
2005-09-14 19:41                   ` Assar
2005-09-14 20:11                     ` Peter Staubach
2005-09-14 22:20                       ` Assar
2005-09-14 22:26                         ` Peter Staubach
2005-09-14 20:15                     ` Peter Staubach
2005-09-14 20:26                       ` Assar
2005-09-14 20:27                         ` Peter Staubach
2005-09-14 20:59                           ` Assar
2005-09-13 20:36             ` Peter Staubach
2005-09-13 20:55               ` Assar

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox