libibverbs/tests: fix buffer overrun issue that caused random connection failures
authorshefty <shefty@ad392aa1-c5ef-ae45-8dd8-e69d62a5ef86>
Fri, 25 Jul 2008 20:17:03 +0000 (20:17 +0000)
committershefty <shefty@ad392aa1-c5ef-ae45-8dd8-e69d62a5ef86>
Fri, 25 Jul 2008 20:17:03 +0000 (20:17 +0000)
libibverbs tests occasionally had failures connecting over sockets in order to exchange QP information.  (The ping-pong tests failed more than the perftests.)  The failure was caused by copying a port number into a buffer that was too small, then using it to look up an address.  Increase the size of the buffer and make sure that it's NULL terminated.

Signed-off-by: Sean Hefty <sean.hefty@intel.com>
git-svn-id: svn://openib.tc.cornell.edu/gen1/trunk@1447 ad392aa1-c5ef-ae45-8dd8-e69d62a5ef86

tests/perftest/read_bw/read_bw.c
tests/perftest/read_lat/read_lat.c
tests/perftest/send_bw/send_bw.c
tests/perftest/send_lat/send_lat.c
tests/perftest/write_bw/write_bw.c
tests/perftest/write_lat/write_lat.c
ulp/libibverbs/examples/rc_pingpong/rc_pingpong.c
ulp/libibverbs/examples/uc_pingpong/uc_pingpong.c
ulp/libibverbs/examples/ud_pingpong/ud_pingpong.c

index e8a3562..c047947 100644 (file)
@@ -109,14 +109,14 @@ static SOCKET pp_client_connect(const char *servername, int port)
 {\r
        struct addrinfo *res, *t;\r
        struct addrinfo hints;\r
-       char service[4];\r
+       char service[6];\r
        int n;\r
        SOCKET sockfd = INVALID_SOCKET;\r
 \r
        memset(&hints, 0, sizeof hints);\r
        hints.ai_family   = AF_UNSPEC;\r
        hints.ai_socktype = SOCK_STREAM;\r
-       sprintf(service, "%d", port);\r
+       sprintf(service, "%d\0", port);\r
 \r
        n = getaddrinfo(servername, service, &hints, &res);\r
 \r
@@ -188,7 +188,7 @@ static SOCKET pp_server_connect(int port)
 {\r
        struct addrinfo *res, *t;\r
        struct addrinfo hints;\r
-       char service[4];\r
+       char service[6];\r
        SOCKET sockfd = INVALID_SOCKET, connfd;\r
        int n;\r
 \r
@@ -196,7 +196,7 @@ static SOCKET pp_server_connect(int port)
        hints.ai_flags    = AI_PASSIVE;\r
        hints.ai_family   = AF_UNSPEC;\r
        hints.ai_socktype = SOCK_STREAM;\r
-       sprintf(service, "%d", port);\r
+       sprintf(service, "%d\0", port);\r
 \r
        n = getaddrinfo(NULL, service, &hints, &res);\r
 \r
index 74cbe29..936bac9 100644 (file)
@@ -184,14 +184,14 @@ static SOCKET pp_client_connect(const char *servername, int port)
 {\r
        struct addrinfo *res, *t;\r
        struct addrinfo hints;\r
-       char service[4];\r
+       char service[6];\r
        int n;\r
        SOCKET sockfd = INVALID_SOCKET;\r
 \r
        memset(&hints, 0, sizeof hints);\r
        hints.ai_family   = AF_UNSPEC;\r
        hints.ai_socktype = SOCK_STREAM;\r
-       sprintf(service, "%d", port);\r
+       sprintf(service, "%d\0", port);\r
 \r
        n = getaddrinfo(servername, service, &hints, &res);\r
 \r
@@ -232,7 +232,7 @@ static SOCKET pp_server_connect(int port)
 {\r
        struct addrinfo *res, *t;\r
        struct addrinfo hints;\r
-       char service[4];\r
+       char service[6];\r
        SOCKET sockfd = INVALID_SOCKET, connfd;\r
        int n;\r
 \r
@@ -240,7 +240,7 @@ static SOCKET pp_server_connect(int port)
        hints.ai_flags    = AI_PASSIVE;\r
        hints.ai_family   = AF_UNSPEC;\r
        hints.ai_socktype = SOCK_STREAM;\r
-       sprintf(service, "%d", port);\r
+       sprintf(service, "%d\0", port);\r
 \r
        n = getaddrinfo(NULL, service, &hints, &res);\r
 \r
index fd2f966..82353cb 100644 (file)
@@ -124,14 +124,14 @@ static SOCKET pp_client_connect(const char *servername, int port)
 {\r
        struct addrinfo *res, *t;\r
        struct addrinfo hints;\r
-       char service[4];\r
+       char service[6];\r
        int n;\r
        SOCKET sockfd = INVALID_SOCKET;\r
 \r
        memset(&hints, 0, sizeof hints);\r
        hints.ai_family   = AF_UNSPEC;\r
        hints.ai_socktype = SOCK_STREAM;\r
-       sprintf(service, "%d", port);\r
+       sprintf(service, "%d\0", port);\r
 \r
        n = getaddrinfo(servername, service, &hints, &res);\r
 \r
@@ -203,7 +203,7 @@ static SOCKET pp_server_connect(int port)
 {\r
        struct addrinfo *res, *t;\r
        struct addrinfo hints;\r
-       char service[4];\r
+       char service[6];\r
        SOCKET sockfd = INVALID_SOCKET, connfd;\r
        int n;\r
 \r
@@ -211,7 +211,7 @@ static SOCKET pp_server_connect(int port)
        hints.ai_flags    = AI_PASSIVE;\r
        hints.ai_family   = AF_UNSPEC;\r
        hints.ai_socktype = SOCK_STREAM;\r
-       sprintf(service, "%d", port);\r
+       sprintf(service, "%d\0", port);\r
 \r
        n = getaddrinfo(NULL, service, &hints, &res);\r
 \r
index 25fcbe3..a24f053 100644 (file)
@@ -195,14 +195,14 @@ static SOCKET pp_client_connect(const char *servername, int port)
 {\r
        struct addrinfo *res, *t;\r
        struct addrinfo hints;\r
-       char service[4];\r
+       char service[6];\r
        int n;\r
        SOCKET sockfd = INVALID_SOCKET;\r
 \r
        memset(&hints, 0, sizeof hints);\r
        hints.ai_family   = AF_UNSPEC;\r
        hints.ai_socktype = SOCK_STREAM;\r
-       sprintf(service, "%d", port);\r
+       sprintf(service, "%d\0", port);\r
 \r
        n = getaddrinfo(servername, service, &hints, &res);\r
 \r
@@ -243,7 +243,7 @@ static SOCKET pp_server_connect(int port)
 {\r
        struct addrinfo *res, *t;\r
        struct addrinfo hints;\r
-       char service[4];\r
+       char service[6];\r
        SOCKET sockfd = INVALID_SOCKET, connfd;\r
        int n;\r
 \r
@@ -251,7 +251,7 @@ static SOCKET pp_server_connect(int port)
        hints.ai_flags    = AI_PASSIVE;\r
        hints.ai_family   = AF_UNSPEC;\r
        hints.ai_socktype = SOCK_STREAM;\r
-       sprintf(service, "%d", port);\r
+       sprintf(service, "%d\0", port);\r
 \r
        n = getaddrinfo(NULL, service, &hints, &res);\r
 \r
index 401a268..9ed3e28 100644 (file)
@@ -118,14 +118,14 @@ static SOCKET pp_client_connect(const char *servername, int port)
 {\r
        struct addrinfo *res, *t;\r
        struct addrinfo hints;\r
-       char service[4];\r
+       char service[6];\r
        int n;\r
        SOCKET sockfd = INVALID_SOCKET;\r
 \r
        memset(&hints, 0, sizeof hints);\r
        hints.ai_family   = AF_UNSPEC;\r
        hints.ai_socktype = SOCK_STREAM;\r
-       sprintf(service, "%d", port);\r
+       sprintf(service, "%d\0", port);\r
 \r
        n = getaddrinfo(servername, service, &hints, &res);\r
 \r
@@ -197,7 +197,7 @@ static SOCKET pp_server_connect(int port)
 {\r
        struct addrinfo *res, *t;\r
        struct addrinfo hints;\r
-       char service[4];\r
+       char service[6];\r
        SOCKET sockfd = INVALID_SOCKET, connfd;\r
        int n;\r
 \r
@@ -205,7 +205,7 @@ static SOCKET pp_server_connect(int port)
        hints.ai_flags    = AI_PASSIVE;\r
        hints.ai_family   = AF_UNSPEC;\r
        hints.ai_socktype = SOCK_STREAM;\r
-       sprintf(service, "%d", port);\r
+       sprintf(service, "%d\0", port);\r
 \r
        n = getaddrinfo(NULL, service, &hints, &res);\r
 \r
index ddd73e3..3e04e83 100644 (file)
@@ -181,14 +181,14 @@ static SOCKET pp_client_connect(const char *servername, int port)
 {\r
        struct addrinfo *res, *t;\r
        struct addrinfo hints;\r
-       char service[4];\r
+       char service[6];\r
        int n;\r
        SOCKET sockfd = INVALID_SOCKET;\r
 \r
        memset(&hints, 0, sizeof hints);\r
        hints.ai_family   = AF_UNSPEC;\r
        hints.ai_socktype = SOCK_STREAM;\r
-       sprintf(service, "%d", port);\r
+       sprintf(service, "%d\0", port);\r
 \r
        n = getaddrinfo(servername, service, &hints, &res);\r
 \r
@@ -229,7 +229,7 @@ static SOCKET pp_server_connect(int port)
 {\r
        struct addrinfo *res, *t;\r
        struct addrinfo hints;\r
-       char service[4];\r
+       char service[6];\r
        SOCKET sockfd = INVALID_SOCKET, connfd;\r
        int n;\r
 \r
@@ -237,7 +237,7 @@ static SOCKET pp_server_connect(int port)
        hints.ai_flags    = AI_PASSIVE;\r
        hints.ai_family   = AF_UNSPEC;\r
        hints.ai_socktype = SOCK_STREAM;\r
-       sprintf(service, "%d", port);\r
+       sprintf(service, "%d\0", port);\r
 \r
        n = getaddrinfo(NULL, service, &hints, &res);\r
 \r
index 52a36d1..7281e8a 100644 (file)
@@ -118,7 +118,7 @@ static struct pingpong_dest *pp_client_exch_dest(const char *servername, int por
 {\r
        struct addrinfo *res, *t;\r
        struct addrinfo hints;\r
-       char service[4];\r
+       char service[6];\r
        char msg[sizeof "0000:000000:000000"];\r
        int n;\r
        SOCKET sockfd = INVALID_SOCKET;\r
@@ -127,7 +127,7 @@ static struct pingpong_dest *pp_client_exch_dest(const char *servername, int por
        memset(&hints, 0, sizeof hints);\r
        hints.ai_family   = AF_UNSPEC;\r
        hints.ai_socktype = SOCK_STREAM;\r
-       sprintf(service, "%d", port);\r
+       sprintf(service, "%d\0", port);\r
 \r
        n = getaddrinfo(servername, service, &hints, &res);\r
 \r
@@ -185,7 +185,7 @@ static struct pingpong_dest *pp_server_exch_dest(struct pingpong_context *ctx,
 {\r
        struct addrinfo *res, *t;\r
        struct addrinfo hints;\r
-       char service[4];\r
+       char service[6];\r
        char msg[sizeof "0000:000000:000000"];\r
        int n;\r
        SOCKET sockfd = INVALID_SOCKET, connfd;\r
@@ -195,7 +195,7 @@ static struct pingpong_dest *pp_server_exch_dest(struct pingpong_context *ctx,
        hints.ai_flags    = AI_PASSIVE;\r
        hints.ai_family   = AF_UNSPEC;\r
        hints.ai_socktype = SOCK_STREAM;\r
-       sprintf(service, "%d", port);\r
+       sprintf(service, "%d\0", port);\r
 \r
        n = getaddrinfo(NULL, service, &hints, &res);\r
 \r
index 518843a..b292c5f 100644 (file)
@@ -105,7 +105,7 @@ static struct pingpong_dest *pp_client_exch_dest(const char *servername, int por
 {\r
        struct addrinfo *res, *t;\r
        struct addrinfo hints;\r
-       char service[4];\r
+       char service[6];\r
        char msg[sizeof "0000:000000:000000"];\r
        int n;\r
        SOCKET sockfd = INVALID_SOCKET;\r
@@ -114,7 +114,7 @@ static struct pingpong_dest *pp_client_exch_dest(const char *servername, int por
        memset(&hints, 0, sizeof hints);\r
        hints.ai_family   = AF_UNSPEC;\r
        hints.ai_socktype = SOCK_STREAM;\r
-       sprintf(service, "%d", port);\r
+       sprintf(service, "%d\0", port);\r
 \r
        n = getaddrinfo(servername, service, &hints, &res);\r
 \r
@@ -172,7 +172,7 @@ static struct pingpong_dest *pp_server_exch_dest(struct pingpong_context *ctx,
 {\r
        struct addrinfo *res, *t;\r
        struct addrinfo hints;\r
-       char service[4];\r
+       char service[6];\r
        char msg[sizeof "0000:000000:000000"];\r
        int n;\r
        SOCKET sockfd = INVALID_SOCKET, connfd;\r
@@ -182,7 +182,7 @@ static struct pingpong_dest *pp_server_exch_dest(struct pingpong_context *ctx,
        hints.ai_flags    = AI_PASSIVE;\r
        hints.ai_family   = AF_UNSPEC;\r
        hints.ai_socktype = SOCK_STREAM;\r
-       sprintf(service, "%d", port);\r
+       sprintf(service, "%d\0", port);\r
 \r
        n = getaddrinfo(NULL, service, &hints, &res);\r
 \r
index 3f68a42..831f7d0 100644 (file)
@@ -107,7 +107,7 @@ static struct pingpong_dest *pp_client_exch_dest(const char *servername, int por
 {\r
        struct addrinfo *res, *t;\r
        struct addrinfo hints;\r
-       char service[4];\r
+       char service[6];\r
        char msg[sizeof "0000:000000:000000"];\r
        int n;\r
        SOCKET sockfd = INVALID_SOCKET;\r
@@ -116,7 +116,7 @@ static struct pingpong_dest *pp_client_exch_dest(const char *servername, int por
        memset(&hints, 0, sizeof hints);\r
        hints.ai_family   = AF_UNSPEC;\r
        hints.ai_socktype = SOCK_STREAM;\r
-       sprintf(service, "%d", port);\r
+       sprintf(service, "%d\0", port);\r
 \r
        n = getaddrinfo(servername, service, &hints, &res);\r
 \r
@@ -173,7 +173,7 @@ static struct pingpong_dest *pp_server_exch_dest(struct pingpong_context *ctx,
 {\r
        struct addrinfo *res, *t;\r
        struct addrinfo hints;\r
-       char service[4];\r
+       char service[6];\r
        char msg[sizeof "0000:000000:000000"];\r
        int n;\r
        SOCKET sockfd = INVALID_SOCKET, connfd;\r
@@ -183,7 +183,7 @@ static struct pingpong_dest *pp_server_exch_dest(struct pingpong_context *ctx,
        hints.ai_flags    = AI_PASSIVE;\r
        hints.ai_family   = AF_UNSPEC;\r
        hints.ai_socktype = SOCK_STREAM;\r
-       sprintf(service, "%d", port);\r
+       sprintf(service, "%d\0", port);\r
 \r
        n = getaddrinfo(NULL, service, &hints, &res);\r
 \r