ports/linux: wrap faccessat()
PATCH 1/1 ports/linux: wrap faccessat()
From: Max Kellermann <[email protected]>
--- ports/linux/guts/faccessat.c | 33 +++++++++++++++++++++++++++++++++ ports/linux/wrapfuncs.in | 1 + 2 files changed, 34 insertions(+) create mode 100644 ports/linux/guts/faccessat.c
ports/linux/guts/faccessat.c new file +33 -0
@@ -0,0 +1,33 @@ +/* +* Copyright (c) 2019 Max Kellermann <[email protected]> +* guts/COPYRIGHT for information. +* +* SPDX-License-Identifier: LGPL-2.1-only +* +* static int +* wrap_access(int dirfd, const char *path, int mode, int flags) { +* int rc = -1; +*/ +struct stat64 buf; + +/* note: no attempt to handle the case where user isn't +* root. +*/ + rc =real___fxstatat64 (_STAT_VER, dirfd, path, &buf,AT_SYMLINK_NOFOLLOW ); +if (rc ==-1 ) +return rc; + +if (mode &X_OK ) { +if (buf.st_mode &0111 ) { +return 0 ; + }else { + errno =EPERM ; +return -1 ; + } + }else { +return 0 ; + } + +/* return rc; +* } +*/
ports/linux/wrapfuncs.in +1 -0
@@ -56,3 +56,4 @@ int getgrent_r(struct group *gbuf, char *buf, size_t buflen, struct group **gbuf int capset(cap_user_header_t hdrp, const cap_user_data_t datap); /* real_func=pseudo_capset */ long syscall(long nr, ...); /* hand_wrapped=1 */ int renameat2(int olddirfd, const char *oldpath, int newdirfd, const char *newpath, unsigned int flags); /* flags=AT_SYMLINK_NOFOLLOW */ +int faccessat(int dirfd, const char *path, int mode, int flags);
Signature · 1 line
2.20.1
Quoted 1 line · On Thu, 1 Aug 2019 18:02:06 +0200 Max Kellermann <[email protected]>…
+ *
wrap_access(int dirfd, const char *path, int mode, int flags){
This should probably say "faccessat". I know it's just a comment, but I try to be consistent about these.
ports/linux/guts/faccessat.c line 16
Quoted 1 line
ports/linux/guts/faccessat.c new file +1
-0+ rc =real___fxstatat64 (_STAT_VER, dirfd, path, &buf,AT_SYMLINK_NOFOLLOW );
We should probably be using flags here, not AT_SYMLINK_NOFOLLOW. Or possibly (flags & AT_SYMLINK_NOFOLLOW). Otherwise, we'll get the wrong results if called with flags not including AT_SYMLINK_NOFOLLOW.
-s
Quoted 5 lines · Seebs
ports/linux/guts/faccessat.c line 16
Quoted 1 line
ports/linux/guts/faccessat.c new file +1
-0+ rc =real___fxstatat64 (_STAT_VER, dirfd, path, &buf,AT_SYMLINK_NOFOLLOW );We should probably be using flags here, not
AT_SYMLINK_NOFOLLOW. Or possibly (flags &AT_SYMLINK_NOFOLLOW). Otherwise, we'll get the wrong results if called with flags not includingAT_SYMLINK_NOFOLLOW.
Thanks, I missed that there was indeed a "flags" parameter which can be forwarded. Will resend the patch.
PATCH v2 1/1 ports/linux: wrap faccessat()
In reply to SeebsFrom: Max Kellermann <[email protected]>
--- ports/linux/guts/faccessat.c | 33 +++++++++++++++++++++++++++++++++ ports/linux/wrapfuncs.in | 1 + 2 files changed, 34 insertions(+) create mode 100644 ports/linux/guts/faccessat.c
ports/linux/guts/faccessat.c new file +33 -0
@@ -0,0 +1,33 @@ +/* +* Copyright (c) 2019 Max Kellermann <[email protected]> +* guts/COPYRIGHT for information. +* +* SPDX-License-Identifier: LGPL-2.1-only +* +* static int +* wrap_faccessat(int dirfd, const char *path, int mode, int flags) { +* int rc = -1; +*/ +struct stat64 buf; + +/* note: no attempt to handle the case where user isn't +* root. +*/ + rc =real___fxstatat64 (_STAT_VER, dirfd, path, &buf, flags); +if (rc ==-1 ) +return rc; + +if (mode &X_OK ) { +if (buf.st_mode &0111 ) { +return 0 ; + }else { + errno =EPERM ; +return -1 ; + } + }else { +return 0 ; + } + +/* return rc; +* } +*/
ports/linux/wrapfuncs.in +1 -0
@@ -56,3 +56,4 @@ int getgrent_r(struct group *gbuf, char *buf, size_t buflen, struct group **gbuf int capset(cap_user_header_t hdrp, const cap_user_data_t datap); /* real_func=pseudo_capset */ long syscall(long nr, ...); /* hand_wrapped=1 */ int renameat2(int olddirfd, const char *oldpath, int newdirfd, const char *newpath, unsigned int flags); /* flags=AT_SYMLINK_NOFOLLOW */ +int faccessat(int dirfd, const char *path, int mode, int flags);
Signature · 1 line
2.20.1
✗ patchtest: failure for ports/linux: wrap faccessat() (rev2)
In reply to Seebs== Series Details ==
Series: ports/linux: wrap faccessat() (rev2)
Revision: 2
URL : https://patchwork.openembedded.org/series/19012/
State : failure
== Summary ==
Thank you for submitting this patch series to OpenEmbedded Core. This is an automated response. Several tests have been executed on the proposed series by patchtest resulting in the following failures:
* Issue Series does not apply on top of target branch [test_series_merge_on_head]
Suggested fix Rebase your series on top of targeted branch
Targeted branch master (currently at fc634c41e4)
If you believe any of these test results are incorrect, please reply to the mailing list ([email protected]) raising your concerns. Otherwise we would appreciate you correcting the issues and submitting a new version of the patchset if applicable. Please ensure you add/increment the version number when sending the new version (i.e. [PATCH] -> [PATCH v2] -> [PATCH v3] -> ...).
---
Guidelines: https://www.openembedded.org/wiki/Commit_Patch_Message_Guidelines Test framework: http://git.yoctoproject.org/cgit/cgit.cgi/patchtest Test suite: http://git.yoctoproject.org/cgit/cgit.cgi/patchtest-oe
✗ patchtest: failure for ports/linux: wrap faccessat()
In reply to Max Kellermann== Series Details ==
Series: ports/linux: wrap faccessat()
Revision: 1
URL : https://patchwork.openembedded.org/series/19012/
State : failure
== Summary ==
Thank you for submitting this patch series to OpenEmbedded Core. This is an automated response. Several tests have been executed on the proposed series by patchtest resulting in the following failures:
* Issue Series does not apply on top of target branch [test_series_merge_on_head]
Suggested fix Rebase your series on top of targeted branch
Targeted branch master (currently at fc634c41e4)
If you believe any of these test results are incorrect, please reply to the mailing list ([email protected]) raising your concerns. Otherwise we would appreciate you correcting the issues and submitting a new version of the patchset if applicable. Please ensure you add/increment the version number when sending the new version (i.e. [PATCH] -> [PATCH v2] -> [PATCH v3] -> ...).
---
Guidelines: https://www.openembedded.org/wiki/Commit_Patch_Message_Guidelines Test framework: http://git.yoctoproject.org/cgit/cgit.cgi/patchtest Test suite: http://git.yoctoproject.org/cgit/cgit.cgi/patchtest-oe