diff options
Diffstat (limited to 'fs/cifs/connect.c')
| -rw-r--r-- | fs/cifs/connect.c | 16 | 
1 files changed, 13 insertions, 3 deletions
diff --git a/fs/cifs/connect.c b/fs/cifs/connect.c index 991c63c6bdd..21b3a291c32 100644 --- a/fs/cifs/connect.c +++ b/fs/cifs/connect.c @@ -1575,14 +1575,24 @@ cifs_parse_mount_options(const char *mountdata, const char *devname,  			}  			break;  		case Opt_blank_pass: -			vol->password = NULL; -			break; -		case Opt_pass:  			/* passwords have to be handled differently  			 * to allow the character used for deliminator  			 * to be passed within them  			 */ +			/* +			 * Check if this is a case where the  password +			 * starts with a delimiter +			 */ +			tmp_end = strchr(data, '='); +			tmp_end++; +			if (!(tmp_end < end && tmp_end[1] == delim)) { +				/* No it is not. Set the password to NULL */ +				vol->password = NULL; +				break; +			} +			/* Yes it is. Drop down to Opt_pass below.*/ +		case Opt_pass:  			/* Obtain the value string */  			value = strchr(data, '=');  			value++;  |