[PATCH 07/10] mount.cifs: fix error handling when duplicating options string

Jeff Layton <[email protected]>
Newsgroups gmane.linux.file-systems.cifs
Message-ID <[email protected]>
Signed-off-by: Jeff Layton <[email protected]>
---
 mount.cifs.c |    9 +++++++--
 1 files changed, 7 insertions(+), 2 deletions(-)

diff --git a/mount.cifs.c b/mount.cifs.c
index 4631310..76cf851 100644
--- a/mount.cifs.c
+++ b/mount.cifs.c
@@ -57,6 +57,9 @@
 
 #define MAX_UNC_LEN 1024
 
+/* I believe that the kernel limits options data to a page */
+#define MAX_OPTIONS_LEN	4096
+
 #ifndef SAFE_FREE
 #define SAFE_FREE(x) do { if ((x) != NULL) {free(x); x=NULL;} } while(0)
 #endif
@@ -1225,8 +1228,10 @@ int main(int argc, char ** argv)
 #endif
 			break;
 		case 'o':
-			orgoptions = strdup(optarg);
-		    break;
+			orgoptions = strndup(optarg, MAX_OPTIONS_LEN);
+			if (!orgoptions)
+				exit(EX_SYSERR);
+			break;
 		case 'r':  /* mount readonly */
 			flags |= MS_RDONLY;
 			break;
-- 
1.6.6.1
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.