From 09cb4cd2940ff4c8b863cfa2fd2b043b8da0dca2 Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Wed, 21 Dec 2022 13:08:39 +0100 Subject: [PATCH] Cygwin: path_conv: make sure sym.path_flags is always initialized Commit c1023ee353705 introduced a split between mount flags and path flags. It didn't initialize symlink_info::path_flags in path_conv::check, because that's done in symlink_info::check. However, there are two code paths expecting symlink_info::path_flags being already initialized and both skip symlink_info::check. Make sure symlink_info::path_flags is initalized to 0 early in path_conv::check. Fixes: c1023ee353705 ("Cygwin: path_conv: decouple path_types from mount types") Signed-off-by: Corinna Vinschen --- winsup/cygwin/path.cc | 2 +- winsup/cygwin/release/3.4.4 | 5 +++++ 2 files changed, 6 insertions(+), 1 deletion(-) create mode 100644 winsup/cygwin/release/3.4.4 diff --git a/winsup/cygwin/path.cc b/winsup/cygwin/path.cc index 4df389bba..eaf695b81 100644 --- a/winsup/cygwin/path.cc +++ b/winsup/cygwin/path.cc @@ -718,6 +718,7 @@ path_conv::check (const char *src, unsigned opt, /* FIXME: Do we have to worry about multiple \'s here? */ component = 0; // Number of translated components sym.contents[0] = '\0'; + sym.path_flags = 0; int symlen = 0; @@ -912,7 +913,6 @@ path_conv::check (const char *src, unsigned opt, { fileattr = 0; mount_flags = sym.mount_flags; - path_flags = sym.path_flags; if (component) { error = ENOTDIR; diff --git a/winsup/cygwin/release/3.4.4 b/winsup/cygwin/release/3.4.4 new file mode 100644 index 000000000..6ac702375 --- /dev/null +++ b/winsup/cygwin/release/3.4.4 @@ -0,0 +1,5 @@ +Bug Fixes +--------- + +- Fix an uninitialized variable having weird side-effects in path handling. + Addresses: https://cygwin.com/pipermail/cygwin/2022-December/252734.html