This is an automated email from the ASF dual-hosted git repository. aguettouche pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/incubator-nuttx.git
commit 5a6e08e2817c56c4b284c6266dffe195d835e48c Author: Xiang Xiao <[email protected]> AuthorDate: Wed Jun 23 02:00:20 2021 +0800 lic/libgen: Remove g_retchar from basename/dirname to avoid the race condtion Signed-off-by: Xiang Xiao <[email protected]> Change-Id: If55fba8eca7b98d6a8f0fb44393cf4858b9e9ae4 --- libs/libc/libgen/lib_basename.c | 22 ++++------------------ libs/libc/libgen/lib_dirname.c | 27 ++++++--------------------- 2 files changed, 10 insertions(+), 39 deletions(-) diff --git a/libs/libc/libgen/lib_basename.c b/libs/libc/libgen/lib_basename.c index 797631b..6173775 100644 --- a/libs/libc/libgen/lib_basename.c +++ b/libs/libc/libgen/lib_basename.c @@ -28,12 +28,6 @@ #include <libgen.h> /**************************************************************************** - * Private Data - ****************************************************************************/ - -static char g_retchar[2]; - -/**************************************************************************** * Public Functions ****************************************************************************/ @@ -65,16 +59,14 @@ static char g_retchar[2]; FAR char *basename(FAR char *path) { - char *p; - int len; - int ch; + FAR char *p; + int len; /* Handle some corner cases */ if (!path || *path == '\0') { - ch = '.'; - goto out_retchar; + return "."; } /* Check for trailing slash characters */ @@ -91,8 +83,7 @@ FAR char *basename(FAR char *path) } else { - ch = '/'; - goto out_retchar; + return "/"; } } @@ -109,9 +100,4 @@ FAR char *basename(FAR char *path) /* There is no '/' in the path */ return path; - -out_retchar: - g_retchar[0] = ch; - g_retchar[1] = '\0'; - return g_retchar; } diff --git a/libs/libc/libgen/lib_dirname.c b/libs/libc/libgen/lib_dirname.c index adee1ad..a48ebb6 100644 --- a/libs/libc/libgen/lib_dirname.c +++ b/libs/libc/libgen/lib_dirname.c @@ -28,12 +28,6 @@ #include <libgen.h> /**************************************************************************** - * Private Data - ****************************************************************************/ - -static char g_retchar[2]; - -/**************************************************************************** * Public Functions ****************************************************************************/ @@ -65,16 +59,14 @@ static char g_retchar[2]; FAR char *dirname(FAR char *path) { - char *p; - int len; - int ch; + FAR char *p; + int len; /* Handle some corner cases */ if (!path || *path == '\0') { - ch = '.'; - goto out_retchar; + return "."; } /* Check for trailing slash characters */ @@ -91,8 +83,7 @@ FAR char *dirname(FAR char *path) } else { - ch = '/'; - goto out_retchar; + return "/"; } } @@ -109,8 +100,7 @@ FAR char *dirname(FAR char *path) if (p == path) { - ch = '/'; - goto out_retchar; + return "/"; } /* No, the directory component is the substring before the '/'. */ @@ -121,10 +111,5 @@ FAR char *dirname(FAR char *path) /* There is no '/' in the path */ - ch = '.'; - -out_retchar: - g_retchar[0] = ch; - g_retchar[1] = '\0'; - return g_retchar; + return "."; }
