From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id D399E44191; Thu, 12 Sep 2024 02:56:15 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id A643D4027D; Thu, 12 Sep 2024 02:56:15 +0200 (CEST) Received: from mail-pj1-f46.google.com (mail-pj1-f46.google.com [209.85.216.46]) by mails.dpdk.org (Postfix) with ESMTP id EA26540267 for ; Thu, 12 Sep 2024 02:56:13 +0200 (CEST) Received: by mail-pj1-f46.google.com with SMTP id 98e67ed59e1d1-2d8881850d9so311326a91.3 for ; Wed, 11 Sep 2024 17:56:13 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=networkplumber-org.20230601.gappssmtp.com; s=20230601; t=1726102573; x=1726707373; darn=dpdk.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=dGmLzcG/RPkiMARRGr5IMPAiQH0pr0qs+/aP8TxzrLY=; b=VQ6qYzFIIWFu19Di9BIaM0A3kLlgyOGTeBmgdrplJQN2b7yJF478Our331xByWCwwb 0aImjwRLXJJ1jFZ7AquoviROGWZVrXOVMsmWFuJZC2O1ZgBvMLBLXtMbZXgn0ellxBvg 7z7AGNbdSP0AiMckJuarVcrNCaZempYur8Bp+vY8uXsEcnsDPf1zY5jOSd9s+UVNyJwe MdUC+G8KDLH8Wzegy0UvG6OlW6vyxXcWd+yc2+YTjK5S6uhZSGxOVFyOknogOZslFTlY tUb89ksLshLz+rJGfGMMmC0QhIWPBlvulNYaJkj4pBHqEBr14wbwu9pvM/0YYlrDOEyp 49TQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1726102573; x=1726707373; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=dGmLzcG/RPkiMARRGr5IMPAiQH0pr0qs+/aP8TxzrLY=; b=SABpFxl8OL3LEEJnLJFNs8nMo46TrvAW3hJGxjse20mc5P5KMjXcVbX/0cvZn20diV ZViU04iEmWTHDg8u9fwqgPvhhwnjy4rOjZkRPXWPHQ+NkZG+N31I2em9ArkuGeNqx2ax r99zhTkiw+Khe+ZoRum5xPpUQG+WK46pxt85vYwrJUL3RTlTqvjbvxGo312UZNpibhH3 o48FkL3SDzHcfvwXoLWHi5UYfazEGH+ggF6vcLu2fndmZiaKcLTaQLnmR9zS/2pKS3jg u4skMwlEmULLnQcLhyA80HoDI8K1U7iaBlC7+7cb9KH7WA31IjImCHPchqzDKF+7H7Hs b7uw== X-Gm-Message-State: AOJu0Ywxl/nmcbGh0D1q6TGXKv2Fs1uqHECi2pxURMLn1NjL/QW3hQN0 XHC+ilGLQgB0OwErddH1NM60aYmlIudSqws+rmlheiyvkO+72Y8TtAn8M/mqEFO85SGOv9XfgP7 J X-Google-Smtp-Source: AGHT+IHssYLYPBHqaSTc3v3nO8Pv94qW2BDdkn9yarR69FF7XhLfnGWfHX8iA20fO+/sUjD2CWHVWQ== X-Received: by 2002:a17:90a:6089:b0:2d8:84df:fa0a with SMTP id 98e67ed59e1d1-2dba006213emr1146302a91.32.1726102572885; Wed, 11 Sep 2024 17:56:12 -0700 (PDT) Received: from hermes.local (204-195-96-226.wavecable.com. [204.195.96.226]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-2dadc110510sm11188004a91.44.2024.09.11.17.56.12 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 11 Sep 2024 17:56:12 -0700 (PDT) From: Stephen Hemminger To: dev@dpdk.org Cc: Stephen Hemminger , Sunil Kumar Kori , Rakesh Kudurumalla Subject: [PATCH] graph: replace strtok with strtok_r Date: Wed, 11 Sep 2024 17:55:33 -0700 Message-ID: <20240912005602.71815-1-stephen@networkplumber.org> X-Mailer: git-send-email 2.45.2 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org The function strtok is not thread safe, better to use strtok_r. This patch was found by running semgrep on the DPDK repository. Signed-off-by: Stephen Hemminger --- app/graph/graph.c | 6 +++--- app/graph/utils.c | 18 +++++++++--------- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/app/graph/graph.c b/app/graph/graph.c index 17717738d7..3af031cbaf 100644 --- a/app/graph/graph.c +++ b/app/graph/graph.c @@ -103,9 +103,9 @@ parser_usecases_read(char *usecases) { bool valid = false; uint32_t i, j = 0; - char *token; + char *token, *saveptr = NULL; - token = strtok(usecases, ","); + token = strtok_r(usecases, ",", &saveptr); while (token != NULL) { for (i = 0; i < RTE_DIM(supported_usecases); i++) { if (strcmp(supported_usecases[i], token) == 0) { @@ -116,7 +116,7 @@ parser_usecases_read(char *usecases) break; } } - token = strtok(NULL, ","); + token = strtok_r(NULL, ",", &saveptr); } return valid; diff --git a/app/graph/utils.c b/app/graph/utils.c index 3e8099ea88..5b1f865dd8 100644 --- a/app/graph/utils.c +++ b/app/graph/utils.c @@ -95,12 +95,12 @@ parser_ip4_read(uint32_t *value, char *p) { uint8_t shift = 24; uint32_t ip = 0; - char *token; + char *token, *saveptr = NULL; - token = strtok(p, "."); + token = strtok_r(p, ".", &saveptr); while (token != NULL) { ip |= (((uint32_t)strtoul(token, NULL, 10)) << shift); - token = strtok(NULL, "."); + token = strtok_r(NULL, ".", &saveptr); shift -= 8; } @@ -113,13 +113,13 @@ int parser_ip6_read(uint8_t *value, char *p) { uint64_t val = 0; - char *token; + char *token, *saveptr = NULL; - token = strtok(p, ":"); + token = strtok_r(p, ":", &saveptr); while (token != NULL) { hex_string_to_uint64(&val, token); *value = val; - token = strtok(NULL, ":"); + token = strtok_r(NULL, ":", &saveptr); value++; val = 0; } @@ -132,13 +132,13 @@ parser_mac_read(uint64_t *value, char *p) { uint64_t mac = 0, val = 0; uint8_t shift = 40; - char *token; + char *token, *saveptr = NULL; - token = strtok(p, ":"); + token = strtok_r(p, ":", &saveptr); while (token != NULL) { hex_string_to_uint64(&val, token); mac |= val << shift; - token = strtok(NULL, ":"); + token = strtok_r(NULL, ":", &saveptr); shift -= 8; val = 0; } -- 2.45.2