From: "AreaZR via GitGitGadget" <gitgitgadget@gmail.com>
To: git@vger.kernel.org
Cc: "Ævar Arnfjörð Bjarmason" <avarab@gmail.com>,
"Phillip Wood" <phillip.wood123@gmail.com>,
AreaZR <gfunni234@gmail.com>,
"Seija Kijin" <doremylover123@gmail.com>
Subject: [PATCH v2] win32: ensure len does not cause any overreads
Date: Wed, 18 Dec 2024 00:29:49 +0000 [thread overview]
Message-ID: <pull.1404.v2.git.git.1734481790015.gitgitgadget@gmail.com> (raw)
In-Reply-To: <pull.1404.git.git.1671470222521.gitgitgadget@gmail.com>
From: Seija Kijin <doremylover123@gmail.com>
Check to make sure len is always two less than MAX_PATH,
otherwise an overread will occur, which is
undefined behavior.
Signed-off-by: Seija Kijin <doremylover123@gmail.com>
---
win32: ensure len does not cause any overreads
Check to make sure len is always less than MAX_PATH, otherwise an
overread will occur, which is undefined behavior.
Signed-off-by: Seija Kijin doremylover123@gmail.com
Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-git-1404%2FAreaZR%2Foverread-v2
Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-git-1404/AreaZR/overread-v2
Pull-Request: https://github.com/git/git/pull/1404
Range-diff vs v1:
1: f9ec5429d01 ! 1: dfc34fb4c1a win32: ensure len does not cause any overreads
@@ Metadata
## Commit message ##
win32: ensure len does not cause any overreads
- Check to make sure len is always less than MAX_PATH,
+ Check to make sure len is always two less than MAX_PATH,
otherwise an overread will occur, which is
undefined behavior.
@@ Commit message
## compat/win32/dirent.c ##
@@ compat/win32/dirent.c: DIR *opendir(const char *name)
- DIR *dir;
-
- /* convert name to UTF-16 and check length < MAX_PATH */
-- if ((len = xutftowcs_path(pattern, name)) < 0)
-+ if ((len = xutftowcs_path(pattern, name)) < 0 || len > MAX_PATH)
+ if ((len = xutftowcs_path(pattern, name)) < 0)
return NULL;
++ if (len + 2 >= MAX_PATH)
++ return NULL;
++
/* append optional '/' and wildcard '*' */
+ if (len && !is_dir_sep(pattern[len - 1]))
+ pattern[len++] = '/';
compat/win32/dirent.c | 3 +++
1 file changed, 3 insertions(+)
diff --git a/compat/win32/dirent.c b/compat/win32/dirent.c
index 52420ec7d4d..fb63d1adbc5 100644
--- a/compat/win32/dirent.c
+++ b/compat/win32/dirent.c
@@ -30,6 +30,9 @@ DIR *opendir(const char *name)
if ((len = xutftowcs_path(pattern, name)) < 0)
return NULL;
+ if (len + 2 >= MAX_PATH)
+ return NULL;
+
/* append optional '/' and wildcard '*' */
if (len && !is_dir_sep(pattern[len - 1]))
pattern[len++] = '/';
base-commit: 2ccc89b0c16c51561da90d21cfbb4b58cc877bf6
--
gitgitgadget
prev parent reply other threads:[~2024-12-18 0:29 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-12-19 17:17 [PATCH] win32: ensure len does not cause any overreads Rose via GitGitGadget
2022-12-19 18:19 ` Ævar Arnfjörð Bjarmason
2022-12-19 20:37 ` Phillip Wood
2024-12-18 0:29 ` AreaZR via GitGitGadget [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=pull.1404.v2.git.git.1734481790015.gitgitgadget@gmail.com \
--to=gitgitgadget@gmail.com \
--cc=avarab@gmail.com \
--cc=doremylover123@gmail.com \
--cc=gfunni234@gmail.com \
--cc=git@vger.kernel.org \
--cc=phillip.wood123@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.