[Pkg-ofed-commits] [libfabric] 109/123: prov/sockets: set address size correctly in fi_getname/fi_getpeer - Fixes #985
Ana Beatriz Guerrero López
ana at moszumanska.debian.org
Sat Oct 22 12:28:35 UTC 2016
This is an automated email from the git hooks/post-receive script.
ana pushed a commit to annotated tag v1.1.1
in repository libfabric.
commit 6c9bb70bbc72e8c685bba52251607d43824bc21b
Author: Jithin Jose <jithin.jose at intel.com>
Date: Mon Sep 28 15:53:33 2015 -0700
prov/sockets: set address size correctly in fi_getname/fi_getpeer
- Fixes #985
Signed-off-by: Jithin Jose <jithin.jose at intel.com>
---
prov/sockets/src/sock_ep_msg.c | 30 ++++++++++++------------------
1 file changed, 12 insertions(+), 18 deletions(-)
diff --git a/prov/sockets/src/sock_ep_msg.c b/prov/sockets/src/sock_ep_msg.c
index 0d616ca..5891177 100644
--- a/prov/sockets/src/sock_ep_msg.c
+++ b/prov/sockets/src/sock_ep_msg.c
@@ -243,29 +243,26 @@ static int sock_ep_cm_getname(fid_t fid, void *addr, size_t *addrlen)
{
struct sock_ep *sock_ep = NULL;
struct sock_pep *sock_pep = NULL;
+ size_t len;
- if (*addrlen == 0) {
- *addrlen = sizeof(struct sockaddr_in);
- return -FI_ETOOSMALL;
- }
-
- *addrlen = MIN(*addrlen, sizeof(struct sockaddr_in));
-
+ len = MIN(*addrlen, sizeof(struct sockaddr_in));
switch(fid->fclass) {
case FI_CLASS_EP:
case FI_CLASS_SEP:
sock_ep = container_of(fid, struct sock_ep, ep.fid);
- memcpy(addr, sock_ep->src_addr, *addrlen);
+ memcpy(addr, sock_ep->src_addr, len);
break;
case FI_CLASS_PEP:
sock_pep = container_of(fid, struct sock_pep, pep.fid);
- memcpy(addr, &sock_pep->src_addr, *addrlen);
+ memcpy(addr, &sock_pep->src_addr, len);
break;
default:
SOCK_LOG_ERROR("Invalid argument\n");
return -FI_EINVAL;
}
- return (*addrlen == sizeof(struct sockaddr_in)) ? 0 : -FI_ETOOSMALL;
+
+ *addrlen = sizeof(struct sockaddr_in);
+ return (len == sizeof(struct sockaddr_in)) ? 0 : -FI_ETOOSMALL;
}
static int sock_pep_create_listener(struct sock_pep *pep)
@@ -371,16 +368,13 @@ static int sock_ep_cm_setname(fid_t fid, void *addr, size_t addrlen)
static int sock_ep_cm_getpeer(struct fid_ep *ep, void *addr, size_t *addrlen)
{
struct sock_ep *sock_ep;
-
- if (*addrlen == 0) {
- *addrlen = sizeof(struct sockaddr_in);
- return -FI_ETOOSMALL;
- }
+ size_t len;
sock_ep = container_of(ep, struct sock_ep, ep);
- *addrlen = MIN(*addrlen, sizeof(struct sockaddr_in));
- memcpy(addr, sock_ep->dest_addr, *addrlen);
- return (*addrlen == sizeof(struct sockaddr_in)) ? 0 : -FI_ETOOSMALL;
+ len = MIN(*addrlen, sizeof(struct sockaddr_in));
+ memcpy(addr, sock_ep->dest_addr, len);
+ *addrlen = sizeof(struct sockaddr_in);
+ return (len == sizeof(struct sockaddr_in)) ? 0 : -FI_ETOOSMALL;
}
static int sock_ep_cm_create_socket(void)
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-ofed/libfabric.git
More information about the Pkg-ofed-commits
mailing list