@@ -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;
Signed-off-by: Jeff Layton <jlayton@redhat.com> --- mount.cifs.c | 9 +++++++-- 1 files changed, 7 insertions(+), 2 deletions(-)