git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] open: check fd_flags value before calling fcntl
@ 2025-12-18  3:14 AZero13 via GitGitGadget
  2025-12-18  3:45 ` Junio C Hamano
  0 siblings, 1 reply; 2+ messages in thread
From: AZero13 via GitGitGadget @ 2025-12-18  3:14 UTC (permalink / raw)
  To: git; +Cc: AZero13, AZero13

From: AZero13 <gfunni234@gmail.com>

Otherwise, fcntl can be called with invalid fd_flags.

Signed-off-by: Greg Funni <gfunni234@gmail.com>
---
    open: check fd_flags value before calling fcntl
    
    Otherwise, fcntl can be called with invalid fd_flags.
    
    Signed-off-by:Greg Funni gfunni234@gmail.com

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(-)

diff --git a/compat/open.c b/compat/open.c
index 37ae2b1aeb..b313bcd364 100644
--- a/compat/open.c
+++ b/compat/open.c
@@ -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
-- 
gitgitgadget

^ permalink raw reply related	[flat|nested] 2+ messages in thread

* Re: [PATCH] open: check fd_flags value before calling fcntl
  2025-12-18  3:14 [PATCH] open: check fd_flags value before calling fcntl AZero13 via GitGitGadget
@ 2025-12-18  3:45 ` Junio C Hamano
  0 siblings, 0 replies; 2+ messages in thread
From: Junio C Hamano @ 2025-12-18  3:45 UTC (permalink / raw)
  To: AZero13 via GitGitGadget; +Cc: git, AZero13

"AZero13 via GitGitGadget" <gitgitgadget@gmail.com> writes:

> From: AZero13 <gfunni234@gmail.com>
>
> 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?

> Signed-off-by: Greg Funni <gfunni234@gmail.com>

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?

> ---
>     open: check fd_flags value before calling fcntl
>     
>     Otherwise, fcntl can be called with invalid fd_flags.
>     
>     Signed-off-by:Greg Funni gfunni234@gmail.com
>
> 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(-)
>
> diff --git a/compat/open.c b/compat/open.c
> index 37ae2b1aeb..b313bcd364 100644
> --- a/compat/open.c
> +++ b/compat/open.c
> @@ -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

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2025-12-18  3:45 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-12-18  3:14 [PATCH] open: check fd_flags value before calling fcntl AZero13 via GitGitGadget
2025-12-18  3:45 ` Junio C Hamano

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).