open: check fd_flags value before calling fcntl
PATCH 1/1 open: check fd_flags value before calling fcntl
From: AZero13 <[email protected]>
Otherwise, fcntl can be called with invalid fd_flags.
---
open: check fd_flags value before calling fcntl
Otherwise, fcntl can be called with invalid fd_flags.
Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-git-2131%2FAZero13%2Ffixopen-v1
Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-git-2131/AZero13/fixopen-v1
Pull-Request: https://github.com/git/git/pull/2131
compat/open.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
compat/open.c +2 -2
@@ -44,8 +44,8 @@ int git_open_cloexec(const char *name, int flags)if (!o_cloexec &&0 <= fd && fd_cloexec) {/* Opened w/o O_CLOEXEC? try with fcntl(2) to add it */ -int flags =fcntl (fd,F_GETFD ); -if (fcntl (fd,F_SETFD , flags | fd_cloexec)) +int fd_flags =fcntl (fd,F_GETFD ); +if (fd_flags <0 ||fcntl (fd,F_SETFD , fd_flags | fd_cloexec)) fd_cloexec =0 ; } }
base-commit: c4a0c8845e2426375ad257b6c221a3a7d92ecfda
Signature · 1 line
gitgitgadget
Quoted 3 lines · "AZero13 via GitGitGadget" <[email protected]> writes:
From: AZero13 <[email protected]>
Otherwise, fcntl can be called with invalid
fd_flags.
This somehow feels mischaracterised. The intent of the code is already to check the current flags value using getfd and or-in the cloexec bit to call setfd. What this patch fixes is to handle a failed getfd case correctly.
Subject: git_open_cloexec(): handle failing F_GETFD
Before using F_SETFD to add in fd_cloexec bit, the code uses F_GETFD to see the current set of flags. As it does not pay attention to potential failures, F_SETFD may be called with a set of invalid fcntl bits.
Continue without calling F_SETFD and behave the same way as the case where F_SETFD failed, when the initial F_GETFD failed.
or something like that, perhaps?
Quoted 1 line
Signed-off-by Greg Funni <[email protected]>
The in-body "From: AZer..." line we see above should say "From: Greg..." instead. Set "git config set user.name 'Greg Funni'" in the repository you use to contribute to this project, amend the commit so that it will record "Greg..." instead of "AZer..." as its author, and force push to GGG and tell GGG to send out the email, perhaps?
Quoted 31 lines
---
open: checkfd_flagsvalue before calling fcntlOtherwise, fcntl can be called with invalid
fd_flags.Signed-off-by Greg Funni [email protected]Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-git-2131%2FAZero13%2Ffixopen-v1
Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-git-2131/AZero13/fixopen-v1
Pull-Request: https://github.com/git/git/pull/2131compat/open.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)compat/open.c +2
-2@@ -44,8 +44,8 @@ int git_open_cloexec(const char *name, int flags)if (!o_cloexec &&0 <= fd && fd_cloexec) {/* Opened w/o O_CLOEXEC? try with fcntl(2) to add it */ -int flags =fcntl (fd,F_GETFD ); -if (fcntl (fd,F_SETFD , flags | fd_cloexec)) +int fd_flags =fcntl (fd,F_GETFD ); +if (fd_flags <0 ||fcntl (fd,F_SETFD , fd_flags | fd_cloexec)) fd_cloexec =0 ; } }base-commit:
c4a0c8845e2426375ad257b6c221a3a7d92ecfda