You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@nuttx.apache.org by ag...@apache.org on 2021/06/24 12:21:09 UTC
[incubator-nuttx] 01/02: lic/libgen: Remove g_retchar from
basename/dirname
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 <xi...@xiaomi.com>
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 <xi...@xiaomi.com>
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 ".";
}