Fix name space violation in fortify wrappers (bug 32052)
(cherry picked from commit eed1d6e58125ee5776eba788f1e2d41470bbf657)
This commit is contained in:
parent
b42bf2368f
commit
c96875551b
298
Fix-name-space-violation-in-fortify-wrappers-bug-320.patch
Normal file
298
Fix-name-space-violation-in-fortify-wrappers-bug-320.patch
Normal file
@ -0,0 +1,298 @@
|
|||||||
|
From 059f82c3b9bd929182195c163c6d7f3bbffabf51 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Andreas Schwab <schwab@suse.de>
|
||||||
|
Date: Mon, 5 Aug 2024 10:55:51 +0200
|
||||||
|
Subject: [PATCH] Fix name space violation in fortify wrappers (bug 32052)
|
||||||
|
|
||||||
|
Rename the identifier sz to __sz everywhere.
|
||||||
|
|
||||||
|
Fixes: a643f60c53 ("Make sure that the fortified function conditionals are constant")
|
||||||
|
(cherry picked from commit 39ca997ab378990d5ac1aadbaa52aaf1db6d526f)
|
||||||
|
(redone from scratch because of many conflicts)
|
||||||
|
---
|
||||||
|
NEWS | 2 +-
|
||||||
|
libio/bits/stdio2.h | 40 +++++++++++++++----------------
|
||||||
|
socket/bits/socket2.h | 20 ++++++++--------
|
||||||
|
stdlib/bits/stdlib.h | 10 ++++----
|
||||||
|
wcsmbs/bits/wchar2.h | 56 +++++++++++++++++++++----------------------
|
||||||
|
5 files changed, 64 insertions(+), 64 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/NEWS b/NEWS
|
||||||
|
index 5172049eb2..7a9a4b7ea3 100644
|
||||||
|
--- a/NEWS
|
||||||
|
+++ b/NEWS
|
||||||
|
@@ -56,7 +56,7 @@ The following bugs are resolved with this release:
|
||||||
|
[31890] resolv: Allow short error responses to match any DNS query
|
||||||
|
[31965] rseq extension mechanism does not work as intended
|
||||||
|
[31968] mremap implementation in C does not handle arguments correctly
|
||||||
|
-
|
||||||
|
+ [32052] Name space violation in fortify wrappers
|
||||||
|
|
||||||
|
Version 2.38
|
||||||
|
|
||||||
|
diff --git a/libio/bits/stdio2.h b/libio/bits/stdio2.h
|
||||||
|
index 71226408ab..6cecd1b956 100644
|
||||||
|
--- a/libio/bits/stdio2.h
|
||||||
|
+++ b/libio/bits/stdio2.h
|
||||||
|
@@ -194,36 +194,36 @@ gets (char *__str)
|
||||||
|
__fortify_function __wur __fortified_attr_access (__write_only__, 1, 2) char *
|
||||||
|
fgets (char *__restrict __s, int __n, FILE *__restrict __stream)
|
||||||
|
{
|
||||||
|
- size_t sz = __glibc_objsize (__s);
|
||||||
|
- if (__glibc_safe_or_unknown_len (__n, sizeof (char), sz))
|
||||||
|
+ size_t __sz = __glibc_objsize (__s);
|
||||||
|
+ if (__glibc_safe_or_unknown_len (__n, sizeof (char), __sz))
|
||||||
|
return __fgets_alias (__s, __n, __stream);
|
||||||
|
- if (__glibc_unsafe_len (__n, sizeof (char), sz))
|
||||||
|
- return __fgets_chk_warn (__s, sz, __n, __stream);
|
||||||
|
- return __fgets_chk (__s, sz, __n, __stream);
|
||||||
|
+ if (__glibc_unsafe_len (__n, sizeof (char), __sz))
|
||||||
|
+ return __fgets_chk_warn (__s, __sz, __n, __stream);
|
||||||
|
+ return __fgets_chk (__s, __sz, __n, __stream);
|
||||||
|
}
|
||||||
|
|
||||||
|
__fortify_function __wur size_t
|
||||||
|
fread (void *__restrict __ptr, size_t __size, size_t __n,
|
||||||
|
FILE *__restrict __stream)
|
||||||
|
{
|
||||||
|
- size_t sz = __glibc_objsize0 (__ptr);
|
||||||
|
- if (__glibc_safe_or_unknown_len (__n, __size, sz))
|
||||||
|
+ size_t __sz = __glibc_objsize0 (__ptr);
|
||||||
|
+ if (__glibc_safe_or_unknown_len (__n, __size, __sz))
|
||||||
|
return __fread_alias (__ptr, __size, __n, __stream);
|
||||||
|
- if (__glibc_unsafe_len (__n, __size, sz))
|
||||||
|
- return __fread_chk_warn (__ptr, sz, __size, __n, __stream);
|
||||||
|
- return __fread_chk (__ptr, sz, __size, __n, __stream);
|
||||||
|
+ if (__glibc_unsafe_len (__n, __size, __sz))
|
||||||
|
+ return __fread_chk_warn (__ptr, __sz, __size, __n, __stream);
|
||||||
|
+ return __fread_chk (__ptr, __sz, __size, __n, __stream);
|
||||||
|
}
|
||||||
|
|
||||||
|
#ifdef __USE_GNU
|
||||||
|
__fortify_function __wur __fortified_attr_access (__write_only__, 1, 2) char *
|
||||||
|
fgets_unlocked (char *__restrict __s, int __n, FILE *__restrict __stream)
|
||||||
|
{
|
||||||
|
- size_t sz = __glibc_objsize (__s);
|
||||||
|
- if (__glibc_safe_or_unknown_len (__n, sizeof (char), sz))
|
||||||
|
+ size_t __sz = __glibc_objsize (__s);
|
||||||
|
+ if (__glibc_safe_or_unknown_len (__n, sizeof (char), __sz))
|
||||||
|
return __fgets_unlocked_alias (__s, __n, __stream);
|
||||||
|
- if (__glibc_unsafe_len (__n, sizeof (char), sz))
|
||||||
|
- return __fgets_unlocked_chk_warn (__s, sz, __n, __stream);
|
||||||
|
- return __fgets_unlocked_chk (__s, sz, __n, __stream);
|
||||||
|
+ if (__glibc_unsafe_len (__n, sizeof (char), __sz))
|
||||||
|
+ return __fgets_unlocked_chk_warn (__s, __sz, __n, __stream);
|
||||||
|
+ return __fgets_unlocked_chk (__s, __sz, __n, __stream);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
@@ -233,8 +233,8 @@ __fortify_function __wur size_t
|
||||||
|
fread_unlocked (void *__restrict __ptr, size_t __size, size_t __n,
|
||||||
|
FILE *__restrict __stream)
|
||||||
|
{
|
||||||
|
- size_t sz = __glibc_objsize0 (__ptr);
|
||||||
|
- if (__glibc_safe_or_unknown_len (__n, __size, sz))
|
||||||
|
+ size_t __sz = __glibc_objsize0 (__ptr);
|
||||||
|
+ if (__glibc_safe_or_unknown_len (__n, __size, __sz))
|
||||||
|
{
|
||||||
|
# ifdef __USE_EXTERN_INLINES
|
||||||
|
if (__builtin_constant_p (__size)
|
||||||
|
@@ -259,9 +259,9 @@ fread_unlocked (void *__restrict __ptr, size_t __size, size_t __n,
|
||||||
|
# endif
|
||||||
|
return __fread_unlocked_alias (__ptr, __size, __n, __stream);
|
||||||
|
}
|
||||||
|
- if (__glibc_unsafe_len (__n, __size, sz))
|
||||||
|
- return __fread_unlocked_chk_warn (__ptr, sz, __size, __n, __stream);
|
||||||
|
- return __fread_unlocked_chk (__ptr, sz, __size, __n, __stream);
|
||||||
|
+ if (__glibc_unsafe_len (__n, __size, __sz))
|
||||||
|
+ return __fread_unlocked_chk_warn (__ptr, __sz, __size, __n, __stream);
|
||||||
|
+ return __fread_unlocked_chk (__ptr, __sz, __size, __n, __stream);
|
||||||
|
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
diff --git a/socket/bits/socket2.h b/socket/bits/socket2.h
|
||||||
|
index ffcc671625..5ed2498782 100644
|
||||||
|
--- a/socket/bits/socket2.h
|
||||||
|
+++ b/socket/bits/socket2.h
|
||||||
|
@@ -33,12 +33,12 @@ extern ssize_t __REDIRECT (__recv_chk_warn,
|
||||||
|
__fortify_function ssize_t
|
||||||
|
recv (int __fd, void *__buf, size_t __n, int __flags)
|
||||||
|
{
|
||||||
|
- size_t sz = __glibc_objsize0 (__buf);
|
||||||
|
- if (__glibc_safe_or_unknown_len (__n, sizeof (char), sz))
|
||||||
|
+ size_t __sz = __glibc_objsize0 (__buf);
|
||||||
|
+ if (__glibc_safe_or_unknown_len (__n, sizeof (char), __sz))
|
||||||
|
return __recv_alias (__fd, __buf, __n, __flags);
|
||||||
|
- if (__glibc_unsafe_len (__n, sizeof (char), sz))
|
||||||
|
- return __recv_chk_warn (__fd, __buf, __n, sz, __flags);
|
||||||
|
- return __recv_chk (__fd, __buf, __n, sz, __flags);
|
||||||
|
+ if (__glibc_unsafe_len (__n, sizeof (char), __sz))
|
||||||
|
+ return __recv_chk_warn (__fd, __buf, __n, __sz, __flags);
|
||||||
|
+ return __recv_chk (__fd, __buf, __n, __sz, __flags);
|
||||||
|
}
|
||||||
|
|
||||||
|
extern ssize_t __recvfrom_chk (int __fd, void *__restrict __buf, size_t __n,
|
||||||
|
@@ -61,11 +61,11 @@ __fortify_function ssize_t
|
||||||
|
recvfrom (int __fd, void *__restrict __buf, size_t __n, int __flags,
|
||||||
|
__SOCKADDR_ARG __addr, socklen_t *__restrict __addr_len)
|
||||||
|
{
|
||||||
|
- size_t sz = __glibc_objsize0 (__buf);
|
||||||
|
- if (__glibc_safe_or_unknown_len (__n, sizeof (char), sz))
|
||||||
|
+ size_t __sz = __glibc_objsize0 (__buf);
|
||||||
|
+ if (__glibc_safe_or_unknown_len (__n, sizeof (char), __sz))
|
||||||
|
return __recvfrom_alias (__fd, __buf, __n, __flags, __addr, __addr_len);
|
||||||
|
- if (__glibc_unsafe_len (__n, sizeof (char), sz))
|
||||||
|
- return __recvfrom_chk_warn (__fd, __buf, __n, sz, __flags, __addr,
|
||||||
|
+ if (__glibc_unsafe_len (__n, sizeof (char), __sz))
|
||||||
|
+ return __recvfrom_chk_warn (__fd, __buf, __n, __sz, __flags, __addr,
|
||||||
|
__addr_len);
|
||||||
|
- return __recvfrom_chk (__fd, __buf, __n, sz, __flags, __addr, __addr_len);
|
||||||
|
+ return __recvfrom_chk (__fd, __buf, __n, __sz, __flags, __addr, __addr_len);
|
||||||
|
}
|
||||||
|
diff --git a/stdlib/bits/stdlib.h b/stdlib/bits/stdlib.h
|
||||||
|
index c6c0082ad5..ef33180f10 100644
|
||||||
|
--- a/stdlib/bits/stdlib.h
|
||||||
|
+++ b/stdlib/bits/stdlib.h
|
||||||
|
@@ -36,16 +36,16 @@ extern char *__REDIRECT_NTH (__realpath_chk_warn,
|
||||||
|
__fortify_function __wur char *
|
||||||
|
__NTH (realpath (const char *__restrict __name, char *__restrict __resolved))
|
||||||
|
{
|
||||||
|
- size_t sz = __glibc_objsize (__resolved);
|
||||||
|
+ size_t __sz = __glibc_objsize (__resolved);
|
||||||
|
|
||||||
|
- if (sz == (size_t) -1)
|
||||||
|
+ if (__sz == (size_t) -1)
|
||||||
|
return __realpath_alias (__name, __resolved);
|
||||||
|
|
||||||
|
#if defined _LIBC_LIMITS_H_ && defined PATH_MAX
|
||||||
|
- if (__glibc_unsafe_len (PATH_MAX, sizeof (char), sz))
|
||||||
|
- return __realpath_chk_warn (__name, __resolved, sz);
|
||||||
|
+ if (__glibc_unsafe_len (PATH_MAX, sizeof (char), __sz))
|
||||||
|
+ return __realpath_chk_warn (__name, __resolved, __sz);
|
||||||
|
#endif
|
||||||
|
- return __realpath_chk (__name, __resolved, sz);
|
||||||
|
+ return __realpath_chk (__name, __resolved, __sz);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
diff --git a/wcsmbs/bits/wchar2.h b/wcsmbs/bits/wchar2.h
|
||||||
|
index 6e6234d606..44c1643565 100644
|
||||||
|
--- a/wcsmbs/bits/wchar2.h
|
||||||
|
+++ b/wcsmbs/bits/wchar2.h
|
||||||
|
@@ -59,18 +59,18 @@ __NTH (wmemset (wchar_t *__s, wchar_t __c, size_t __n))
|
||||||
|
__fortify_function wchar_t *
|
||||||
|
__NTH (wcscpy (wchar_t *__restrict __dest, const wchar_t *__restrict __src))
|
||||||
|
{
|
||||||
|
- size_t sz = __glibc_objsize (__dest);
|
||||||
|
- if (sz != (size_t) -1)
|
||||||
|
- return __wcscpy_chk (__dest, __src, sz / sizeof (wchar_t));
|
||||||
|
+ size_t __sz = __glibc_objsize (__dest);
|
||||||
|
+ if (__sz != (size_t) -1)
|
||||||
|
+ return __wcscpy_chk (__dest, __src, __sz / sizeof (wchar_t));
|
||||||
|
return __wcscpy_alias (__dest, __src);
|
||||||
|
}
|
||||||
|
|
||||||
|
__fortify_function wchar_t *
|
||||||
|
__NTH (wcpcpy (wchar_t *__restrict __dest, const wchar_t *__restrict __src))
|
||||||
|
{
|
||||||
|
- size_t sz = __glibc_objsize (__dest);
|
||||||
|
- if (sz != (size_t) -1)
|
||||||
|
- return __wcpcpy_chk (__dest, __src, sz / sizeof (wchar_t));
|
||||||
|
+ size_t __sz = __glibc_objsize (__dest);
|
||||||
|
+ if (__sz != (size_t) -1)
|
||||||
|
+ return __wcpcpy_chk (__dest, __src, __sz / sizeof (wchar_t));
|
||||||
|
return __wcpcpy_alias (__dest, __src);
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -95,9 +95,9 @@ __NTH (wcpncpy (wchar_t *__restrict __dest, const wchar_t *__restrict __src,
|
||||||
|
__fortify_function wchar_t *
|
||||||
|
__NTH (wcscat (wchar_t *__restrict __dest, const wchar_t *__restrict __src))
|
||||||
|
{
|
||||||
|
- size_t sz = __glibc_objsize (__dest);
|
||||||
|
- if (sz != (size_t) -1)
|
||||||
|
- return __wcscat_chk (__dest, __src, sz / sizeof (wchar_t));
|
||||||
|
+ size_t __sz = __glibc_objsize (__dest);
|
||||||
|
+ if (__sz != (size_t) -1)
|
||||||
|
+ return __wcscat_chk (__dest, __src, __sz / sizeof (wchar_t));
|
||||||
|
return __wcscat_alias (__dest, __src);
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -105,9 +105,9 @@ __fortify_function wchar_t *
|
||||||
|
__NTH (wcsncat (wchar_t *__restrict __dest, const wchar_t *__restrict __src,
|
||||||
|
size_t __n))
|
||||||
|
{
|
||||||
|
- size_t sz = __glibc_objsize (__dest);
|
||||||
|
- if (sz != (size_t) -1)
|
||||||
|
- return __wcsncat_chk (__dest, __src, __n, sz / sizeof (wchar_t));
|
||||||
|
+ size_t __sz = __glibc_objsize (__dest);
|
||||||
|
+ if (__sz != (size_t) -1)
|
||||||
|
+ return __wcsncat_chk (__dest, __src, __n, __sz / sizeof (wchar_t));
|
||||||
|
return __wcsncat_alias (__dest, __src, __n);
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -144,10 +144,10 @@ __fortify_function int
|
||||||
|
__NTH (swprintf (wchar_t *__restrict __s, size_t __n,
|
||||||
|
const wchar_t *__restrict __fmt, ...))
|
||||||
|
{
|
||||||
|
- size_t sz = __glibc_objsize (__s);
|
||||||
|
- if (sz != (size_t) -1 || __USE_FORTIFY_LEVEL > 1)
|
||||||
|
+ size_t __sz = __glibc_objsize (__s);
|
||||||
|
+ if (__sz != (size_t) -1 || __USE_FORTIFY_LEVEL > 1)
|
||||||
|
return __swprintf_chk (__s, __n, __USE_FORTIFY_LEVEL - 1,
|
||||||
|
- sz / sizeof (wchar_t), __fmt, __va_arg_pack ());
|
||||||
|
+ __sz / sizeof (wchar_t), __fmt, __va_arg_pack ());
|
||||||
|
return __swprintf_alias (__s, __n, __fmt, __va_arg_pack ());
|
||||||
|
}
|
||||||
|
#elif !defined __cplusplus
|
||||||
|
@@ -163,10 +163,10 @@ __fortify_function int
|
||||||
|
__NTH (vswprintf (wchar_t *__restrict __s, size_t __n,
|
||||||
|
const wchar_t *__restrict __fmt, __gnuc_va_list __ap))
|
||||||
|
{
|
||||||
|
- size_t sz = __glibc_objsize (__s);
|
||||||
|
- if (sz != (size_t) -1 || __USE_FORTIFY_LEVEL > 1)
|
||||||
|
+ size_t __sz = __glibc_objsize (__s);
|
||||||
|
+ if (__sz != (size_t) -1 || __USE_FORTIFY_LEVEL > 1)
|
||||||
|
return __vswprintf_chk (__s, __n, __USE_FORTIFY_LEVEL - 1,
|
||||||
|
- sz / sizeof (wchar_t), __fmt, __ap);
|
||||||
|
+ __sz / sizeof (wchar_t), __fmt, __ap);
|
||||||
|
return __vswprintf_alias (__s, __n, __fmt, __ap);
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -210,25 +210,25 @@ vfwprintf (__FILE *__restrict __stream,
|
||||||
|
__fortify_function __wur wchar_t *
|
||||||
|
fgetws (wchar_t *__restrict __s, int __n, __FILE *__restrict __stream)
|
||||||
|
{
|
||||||
|
- size_t sz = __glibc_objsize (__s);
|
||||||
|
- if (__glibc_safe_or_unknown_len (__n, sizeof (wchar_t), sz))
|
||||||
|
+ size_t __sz = __glibc_objsize (__s);
|
||||||
|
+ if (__glibc_safe_or_unknown_len (__n, sizeof (wchar_t), __sz))
|
||||||
|
return __fgetws_alias (__s, __n, __stream);
|
||||||
|
- if (__glibc_unsafe_len (__n, sizeof (wchar_t), sz))
|
||||||
|
- return __fgetws_chk_warn (__s, sz / sizeof (wchar_t), __n, __stream);
|
||||||
|
- return __fgetws_chk (__s, sz / sizeof (wchar_t), __n, __stream);
|
||||||
|
+ if (__glibc_unsafe_len (__n, sizeof (wchar_t), __sz))
|
||||||
|
+ return __fgetws_chk_warn (__s, __sz / sizeof (wchar_t), __n, __stream);
|
||||||
|
+ return __fgetws_chk (__s, __sz / sizeof (wchar_t), __n, __stream);
|
||||||
|
}
|
||||||
|
|
||||||
|
#ifdef __USE_GNU
|
||||||
|
__fortify_function __wur wchar_t *
|
||||||
|
fgetws_unlocked (wchar_t *__restrict __s, int __n, __FILE *__restrict __stream)
|
||||||
|
{
|
||||||
|
- size_t sz = __glibc_objsize (__s);
|
||||||
|
- if (__glibc_safe_or_unknown_len (__n, sizeof (wchar_t), sz))
|
||||||
|
+ size_t __sz = __glibc_objsize (__s);
|
||||||
|
+ if (__glibc_safe_or_unknown_len (__n, sizeof (wchar_t), __sz))
|
||||||
|
return __fgetws_unlocked_alias (__s, __n, __stream);
|
||||||
|
- if (__glibc_unsafe_len (__n, sizeof (wchar_t), sz))
|
||||||
|
- return __fgetws_unlocked_chk_warn (__s, sz / sizeof (wchar_t), __n,
|
||||||
|
+ if (__glibc_unsafe_len (__n, sizeof (wchar_t), __sz))
|
||||||
|
+ return __fgetws_unlocked_chk_warn (__s, __sz / sizeof (wchar_t), __n,
|
||||||
|
__stream);
|
||||||
|
- return __fgetws_unlocked_chk (__s, sz / sizeof (wchar_t), __n, __stream);
|
||||||
|
+ return __fgetws_unlocked_chk (__s, __sz / sizeof (wchar_t), __n, __stream);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
--
|
||||||
|
2.33.0
|
||||||
|
|
||||||
@ -67,7 +67,7 @@
|
|||||||
##############################################################################
|
##############################################################################
|
||||||
Name: glibc
|
Name: glibc
|
||||||
Version: 2.38
|
Version: 2.38
|
||||||
Release: 32
|
Release: 33
|
||||||
Summary: The GNU libc libraries
|
Summary: The GNU libc libraries
|
||||||
License: %{all_license}
|
License: %{all_license}
|
||||||
URL: http://www.gnu.org/software/glibc/
|
URL: http://www.gnu.org/software/glibc/
|
||||||
@ -212,6 +212,7 @@ Patch122: 0009-mremap-Update-manual-entry.patch
|
|||||||
Patch123: 0010-Add-mremap-tests.patch
|
Patch123: 0010-Add-mremap-tests.patch
|
||||||
Patch124: 0011-Update-syscall-lists-for-Linux-6.5.patch
|
Patch124: 0011-Update-syscall-lists-for-Linux-6.5.patch
|
||||||
Patch125: 0012-resolv-Fix-tst-resolv-short-response-for-older-GCC-b.patch
|
Patch125: 0012-resolv-Fix-tst-resolv-short-response-for-older-GCC-b.patch
|
||||||
|
Patch126: Fix-name-space-violation-in-fortify-wrappers-bug-320.patch
|
||||||
|
|
||||||
#openEuler patch list
|
#openEuler patch list
|
||||||
Patch9000: turn-default-value-of-x86_rep_stosb_threshold_form_2K_to_1M.patch
|
Patch9000: turn-default-value-of-x86_rep_stosb_threshold_form_2K_to_1M.patch
|
||||||
@ -1445,6 +1446,9 @@ fi
|
|||||||
%endif
|
%endif
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Thu Aug 8 2024 Qingqing Li <liqingqing3@huawei.com> - 2.38-33
|
||||||
|
- Fix name space violation in fortify wrappers (bug 32052)
|
||||||
|
|
||||||
* Fri Aug 2 2024 Qingqing Li <liqingqing3@huawei.com> - 2.38-32
|
* Fri Aug 2 2024 Qingqing Li <liqingqing3@huawei.com> - 2.38-32
|
||||||
- resolv: Fix tst-resolv-short-response for older GCC (bug 32042)
|
- resolv: Fix tst-resolv-short-response for older GCC (bug 32042)
|
||||||
- Update syscall lists for Linux 6.5
|
- Update syscall lists for Linux 6.5
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user