mirror of
https://git.yoctoproject.org/poky
synced 2026-02-20 08:29:42 +01:00
pseudo: Make realpath() remove trailing slashes
Linux system's realpath() remove trailing slashes, but pseudo's doesn't, need
make them identical.
E.g., the following code (rel.c) prints '/tmp' with system's realpath, but
pseudo's realpath prints '/tmp/':
#include <stdio.h>
#include <limits.h>
#include <stdlib.h>
int main() {
char out[PATH_MAX];
printf("%s\n", realpath("/tmp/", out));
return 0;
}
$ bitbake base-passwd -cdevshell # For pseudo env
$ gcc rel.c
$ ./a.out
/tmp/ (but should be /tmp)
This patch fixes the problem.
(From OE-Core rev: c251e753486dae9b460df315a6d19d6c81098ecb)
Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit 319bbf66e03377adf2db7efa93ef578e3460eb38)
Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
committed by
Richard Purdie
parent
5a9198f525
commit
0d53c40c36
@@ -0,0 +1,57 @@
|
||||
From 86c9a5610e3333ad6aaadb1ac1e8b5a2c948d119 Mon Sep 17 00:00:00 2001
|
||||
From: Robert Yang <liezhi.yang@windriver.com>
|
||||
Date: Mon, 25 Nov 2019 18:46:45 +0800
|
||||
Subject: [PATCH] realpath.c: Remove trailing slashes
|
||||
|
||||
Linux system's realpath() remove trailing slashes, but pseudo's doesn't, need
|
||||
make them identical.
|
||||
|
||||
E.g., the following code (rel.c) prints '/tmp' with system's realpath, but
|
||||
pseudo's realpath prints '/tmp/':
|
||||
|
||||
#include <stdio.h>
|
||||
#include <limits.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
int main() {
|
||||
char out[PATH_MAX];
|
||||
printf("%s\n", realpath("/tmp/", out));
|
||||
return 0;
|
||||
}
|
||||
|
||||
$ bitbake base-passwd -cdevshell # For pseudo env
|
||||
$ gcc rel.c
|
||||
$ ./a.out
|
||||
/tmp/ (but should be /tmp)
|
||||
|
||||
This patch fixes the problem.
|
||||
|
||||
Upstream-Status: Submitted [https://lists.yoctoproject.org/g/poky/message/11879]
|
||||
|
||||
Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
|
||||
---
|
||||
ports/unix/guts/realpath.c | 9 ++++++++-
|
||||
1 file changed, 8 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/ports/unix/guts/realpath.c b/ports/unix/guts/realpath.c
|
||||
--- a/ports/unix/guts/realpath.c
|
||||
+++ b/ports/unix/guts/realpath.c
|
||||
@@ -14,7 +14,14 @@
|
||||
errno = ENAMETOOLONG;
|
||||
return NULL;
|
||||
}
|
||||
- if ((len = strlen(rname)) >= pseudo_sys_path_max()) {
|
||||
+ len = strlen(rname);
|
||||
+ char *ep = rname + len - 1;
|
||||
+ while (ep > rname && *ep == '/') {
|
||||
+ --len;
|
||||
+ *(ep--) = '\0';
|
||||
+ }
|
||||
+
|
||||
+ if (len >= pseudo_sys_path_max()) {
|
||||
errno = ENAMETOOLONG;
|
||||
return NULL;
|
||||
}
|
||||
--
|
||||
2.7.4
|
||||
|
||||
@@ -8,6 +8,7 @@ SRC_URI = "git://git.yoctoproject.org/pseudo \
|
||||
file://toomanyfiles.patch \
|
||||
file://0001-maketables-wrappers-use-Python-3.patch \
|
||||
file://0001-Add-statx.patch \
|
||||
file://0001-realpath.c-Remove-trailing-slashes.patch \
|
||||
"
|
||||
|
||||
SRCREV = "060058bb29f70b244e685b3c704eb0641b736f73"
|
||||
|
||||
Reference in New Issue
Block a user