From: Sean Hefty Date: Thu, 31 May 2012 23:48:32 +0000 (-0700) Subject: ibacm/acme: Eliminate segfault when SLID/SGID not given X-Git-Tag: v1.0.7~3 X-Git-Url: https://openfabrics.org/gitweb/?a=commitdiff_plain;h=16f0f36dca36ba2bf6b3c34705a4288e850454f1;p=~shefty%2Fibacm.git ibacm/acme: Eliminate segfault when SLID/SGID not given Problem and cause reported by Hal Rosenstock Signed-off-by: Sean Hefty Tested-by: Hal Rosenstock --- diff --git a/src/acme.c b/src/acme.c index e6ae188..0e1d4ed 100644 --- a/src/acme.c +++ b/src/acme.c @@ -495,7 +495,8 @@ static int resolve_lid(struct ibv_path_record *path) { int ret; - path->slid = htons((uint16_t) atoi(src_addr)); + if (src_addr) + path->slid = htons((uint16_t) atoi(src_addr)); path->dlid = htons((uint16_t) atoi(dest_addr)); path->reversible_numpath = IBV_PATH_RECORD_REVERSIBLE | 1; @@ -510,10 +511,13 @@ static int resolve_gid(struct ibv_path_record *path) { int ret; - ret = inet_pton(AF_INET6, src_addr, &path->sgid); - if (ret <= 0) { - printf("inet_pton error on source address (%s): 0x%x\n", src_addr, ret); - return ret ? ret : -1; + if (src_addr) { + ret = inet_pton(AF_INET6, src_addr, &path->sgid); + if (ret <= 0) { + printf("inet_pton error on source address (%s): 0x%x\n", + src_addr, ret); + return ret ? ret : -1; + } } ret = inet_pton(AF_INET6, dest_addr, &path->dgid);