summaryrefslogtreecommitdiff
path: root/realpath-Avoid-overwriting-preexisting-error-CVE-2021-3998.patch
diff options
context:
space:
mode:
Diffstat (limited to 'realpath-Avoid-overwriting-preexisting-error-CVE-2021-3998.patch')
-rw-r--r--realpath-Avoid-overwriting-preexisting-error-CVE-2021-3998.patch33
1 files changed, 33 insertions, 0 deletions
diff --git a/realpath-Avoid-overwriting-preexisting-error-CVE-2021-3998.patch b/realpath-Avoid-overwriting-preexisting-error-CVE-2021-3998.patch
new file mode 100644
index 0000000..95c6bd6
--- /dev/null
+++ b/realpath-Avoid-overwriting-preexisting-error-CVE-2021-3998.patch
@@ -0,0 +1,33 @@
+From d084965adc7baa8ea804427cccf973cea556d697 Mon Sep 17 00:00:00 2001
+From: Siddhesh Poyarekar <siddhesh@sourceware.org>
+Date: Mon, 24 Jan 2022 21:36:41 +0530
+Subject: [PATCH] realpath: Avoid overwriting preexisting error (CVE-2021-3998)
+
+Set errno and failure for paths that are too long only if no other error
+occurred earlier.
+
+Related: BZ #28770
+
+Reviewed-by: Andreas Schwab <schwab@linux-m68k.org>
+Signed-off-by: Siddhesh Poyarekar <siddhesh@sourceware.org>
+(cherry picked from commit 84d2d0fe20bdf94feed82b21b4d7d136db471f03)
+---
+ stdlib/canonicalize.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/stdlib/canonicalize.c b/stdlib/canonicalize.c
+index 7a23a51..e2d4244 100644
+--- a/stdlib/canonicalize.c
++++ b/stdlib/canonicalize.c
+@@ -404,7 +404,7 @@ error:
+ {
+ if (dest - rname <= get_path_max ())
+ rname = strcpy (resolved, rname);
+- else
++ else if (!failed)
+ {
+ failed = true;
+ __set_errno (ENAMETOOLONG);
+--
+1.8.3.1
+