Skip to content

Commit

Permalink
CIFS: Fix memory over bound bug in cifs_parse_mount_options
Browse files Browse the repository at this point in the history
While password processing we can get out of options array bound if
the next character after array is delimiter. The patch adds a check
if we reach the end.

Signed-off-by: Pavel Shilovsky <piastry@etersoft.ru>
Reviewed-by: Jeff Layton <jlayton@redhat.com>
Signed-off-by: Steve French <sfrench@us.ibm.com>
  • Loading branch information
Pavel Shilovsky authored and Steve French committed Apr 21, 2011
1 parent f0e615c commit 4906e50
Showing 1 changed file with 3 additions and 2 deletions.
5 changes: 3 additions & 2 deletions fs/cifs/connect.c
Original file line number Diff line number Diff line change
Expand Up @@ -807,8 +807,7 @@ static int
cifs_parse_mount_options(char *options, const char *devname,
struct smb_vol *vol)
{
char *value;
char *data;
char *value, *data, *end;
unsigned int temp_len, i, j;
char separator[2];
short int override_uid = -1;
Expand Down Expand Up @@ -851,6 +850,7 @@ cifs_parse_mount_options(char *options, const char *devname,
if (!options)
return 1;

end = options + strlen(options);
if (strncmp(options, "sep=", 4) == 0) {
if (options[4] != 0) {
separator[0] = options[4];
Expand Down Expand Up @@ -916,6 +916,7 @@ cifs_parse_mount_options(char *options, const char *devname,
the only illegal character in a password is null */

if ((value[temp_len] == 0) &&
(value + temp_len < end) &&
(value[temp_len+1] == separator[0])) {
/* reinsert comma */
value[temp_len] = separator[0];
Expand Down

0 comments on commit 4906e50

Please sign in to comment.