From e8207e9d5d565e102e6907bbcbc755cd797027b4 Mon Sep 17 00:00:00 2001 From: Ben Walker Date: Thu, 24 Jan 2019 16:15:42 -0700 Subject: [PATCH] nvmf/tcp: Eliminate atoi use Use spdk_strtol instead, which does better error detection. Change-Id: I14236a0b3e42f39a65d67149dd91d791be9f55f1 Signed-off-by: Ben Walker Reviewed-on: https://review.gerrithub.io/c/441983 Tested-by: SPDK CI Jenkins Reviewed-by: Shuhei Matsumoto Reviewed-by: wuzhouhui Reviewed-by: Darek Stojaczyk --- lib/nvme/nvme_tcp.c | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/lib/nvme/nvme_tcp.c b/lib/nvme/nvme_tcp.c index 0a3b5cd42..743f100a2 100644 --- a/lib/nvme/nvme_tcp.c +++ b/lib/nvme/nvme_tcp.c @@ -44,6 +44,7 @@ #include "spdk/crc32.h" #include "spdk/endian.h" #include "spdk/assert.h" +#include "spdk/string.h" #include "spdk/thread.h" #include "spdk/trace.h" #include "spdk/util.h" @@ -1640,6 +1641,7 @@ nvme_tcp_qpair_connect(struct nvme_tcp_qpair *tqpair) int rc; struct spdk_nvme_ctrlr *ctrlr; int family; + long int port; ctrlr = tqpair->qpair.ctrlr; @@ -1675,10 +1677,16 @@ nvme_tcp_qpair_connect(struct nvme_tcp_qpair *tqpair) } } - tqpair->sock = spdk_sock_connect(ctrlr->trid.traddr, atoi(ctrlr->trid.trsvcid)); + port = spdk_strtol(ctrlr->trid.trsvcid, 10); + if (port <= 0 || port >= INT_MAX) { + SPDK_ERRLOG("Invalid port: %s\n", ctrlr->trid.trsvcid); + return -1; + } + + tqpair->sock = spdk_sock_connect(ctrlr->trid.traddr, port); if (!tqpair->sock) { - SPDK_ERRLOG("sock connection error of tqpair=%p with addr=%s, port=%d\n", - tqpair, ctrlr->trid.traddr, atoi(ctrlr->trid.trsvcid)); + SPDK_ERRLOG("sock connection error of tqpair=%p with addr=%s, port=%ld\n", + tqpair, ctrlr->trid.traddr, port); return -1; }