cifs: writing past end of struct in cifs_convert_address()
Subsystems (3)
PATCH 1/1 cifs: writing past end of struct in cifs_convert_address()
"s6->sin6_scope_id" is an int bits but strict_strtoul() writes a long so this can corrupt memory on 64 bit systems.
Signed-off-by Dan Carpenter <[email protected]>
fs/cifs/netmisc.c +1 -2
@@ -197,8 +197,7 @@ cifs_convert_address(struct sockaddr *dst, const char *src, int len)memcpy (scope_id, pct +1 , slen); scope_id[slen] ='\0' ; - rc =strict_strtoul (scope_id,0 , - (unsigned long *)&s6->sin6_scope_id); + rc =kstrtouint (scope_id,0 , &s6->sin6_scope_id); rc = (rc =0 ) ?1 :0 ; }
A message that is not in the archive (sent off-list or not yet received): [email protected]
Jeff Layton
Reviewed-byQuoted 10 lines · On Thu, 1 Mar 2012 10:06:52 +0300 Dan Carpenter <[email protected]>…
"
s6->sin6_scope_id" is an int bits butstrict_strtoul()writes a long so this can corrupt memory on 64 bit systems.Signed-off-by Dan Carpenter <[email protected]>fs/cifs/netmisc.c +0
-0
fs/cifs/netmisc.c cifs_convert_address(struct sockaddr *dst, const char *src, int len) · line 203
Quoted 9 lines
fs/cifs/netmisc.c +1
-2@@ -197,8 +197,7 @@ cifs_convert_address(struct sockaddr *dst, const char *src, int len)memcpy (scope_id, pct +1 , slen); scope_id[slen] ='\0' ; - rc =strict_strtoul (scope_id,0 , - (unsigned long *)&s6->sin6_scope_id); + rc =kstrtouint (scope_id,0 , &s6->sin6_scope_id); rc = (rc =0 ) ?1 :0 ; }
Reviewed-by Jeff Layton <[email protected]>
Jeff Layton
Reviewed-byQuoted 10 lines · On Thu, 1 Mar 2012 10:06:52 +0300 Dan Carpenter <[email protected]>…
"
s6->sin6_scope_id" is an int bits butstrict_strtoul()writes a long so this can corrupt memory on 64 bit systems.Signed-off-by Dan Carpenter <[email protected]>fs/cifs/netmisc.c +0
-0
fs/cifs/netmisc.c cifs_convert_address(struct sockaddr *dst, const char *src, int len) · line 203
Quoted 9 lines
fs/cifs/netmisc.c +1
-2@@ -197,8 +197,7 @@ cifs_convert_address(struct sockaddr *dst, const char *src, int len)memcpy (scope_id, pct +1 , slen); scope_id[slen] ='\0' ; - rc =strict_strtoul (scope_id,0 , - (unsigned long *)&s6->sin6_scope_id); + rc =kstrtouint (scope_id,0 , &s6->sin6_scope_id); rc = (rc =0 ) ?1 :0 ; }
Reviewed-by Jeff Layton <[email protected]>