kNFSd - 3 of 4 - ip_map_init does a kmalloc which isn't checked...
Subsystems (3)
PATCH 1/1 kNFSd - 3 of 4 - ip_map_init does a kmalloc which isn't checked...
### Comments for ChangeSet
There is no way to return an error from a cache init routine, so instead we make sure to pre-allocate the memory needed, and free it after the lookup if the lookup failed.
----------- Diffstat output ------------
./net/sunrpc/svcauth_unix.c | 13 ++++++++++--- 1 files changed, 10 insertions(+), 3 deletions(-)
net/sunrpc/svcauth_unix.c renamed from net/sunrpc/svcauth_unix.c~current~ +10 -3
@@ -119,7 +119,8 @@ static inline int ip_map_match(struct ip }static inline void ip_map_init (struct ip_map *new,struct ip_map *item) { - new->m_class =strdup (item->m_class); + new->m_class = item->m_class; + item->m_class =NULL ; new->m_addr.s_addr = item->m_addr.s_addr; }static inline void ip_map_update (struct ip_map *new,struct ip_map *item)
@@ -191,7 +192,9 @@ static int ip_map_parse(struct cache_det }else dom =NULL ; - ipm.m_class = class; + ipm.m_class =strdup (class); +if (ipm.m_class ==NULL ) +return -ENOMEM ; ipm.m_addr.s_addr =htonl ((((((b1<<8 )|b2)<<8 )|b3)<<8 )|b4); ipm.h.flags =0 ;
@@ -207,6 +210,7 @@ static int ip_map_parse(struct cache_detip_map_put (&ipmp->h, &ip_map_cache);if (dom)auth_domain_put (dom); +if (ipm.m_class)kfree (ipm.m_class);if (!ipmp)return -ENOMEM ;cache_flush ();
@@ -266,7 +270,9 @@ int auth_unix_add_addr(struct in_addr adif (dom->flavour !=RPC_AUTH_UNIX )return -EINVAL ; udom = container_of(dom, struct unix_domain, h); - ip.m_class ="nfsd" ; + ip.m_class =strdup ("nfsd" ); +if (!ip.m_class) +return -ENOMEM ; ip.m_addr = addr; ip.m_client = udom; ip.m_add_change = udom->addr_changes+1 ;
@@ -274,6 +280,7 @@ int auth_unix_add_addr(struct in_addr ad ip.h.expiry_time =NEVER ; ipmp =ip_map_lookup (&ip,1 ); +if (ip.m_class)kfree (ip.m_class);if (ipmp) {ip_map_put (&ipmp->h, &ip_map_cache);return 0 ;
-------------------------------------------------------
This SF.net email is sponsored by: SF.net Giveback Program. Does SourceForge.net help you be more productive? Does it help you create better code? SHARE THE LOVE, and help us help YOU! Click Here: http://sourceforge.net/donate/
_______________________________________________
NFS maillist - [email protected]
https://lists.sourceforge.net/lists/listinfo/nfs