Fix str_open() in a different way
The original patch tried to fix it by not assigning anything to open_mode. That only works if the compiler is able to deduce that bug() will abort the process however (or just not warn about the uninitialized use of open_mode). clang does warn about open_mode being used uninitialized in this function. Solve this by rewriting the function to simply only consider one case, the mode == kVSFSysStrOpenReadOnly one. Otherwise, don't call vsf_sysutil_open_file() and just return -1 after calling bug().
This commit is contained in:
parent
a745964126
commit
a93b3655b0
@ -1,33 +0,0 @@
|
||||
From 8882c5f7788fc2ea7cae824a7fa09b82782fc81e Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Ond=C5=99ej=20Lyson=C4=9Bk?= <olysonek@redhat.com>
|
||||
Date: Fri, 7 Feb 2020 11:51:46 +0100
|
||||
Subject: [PATCH] Fix assignment of an enumerator of a different type
|
||||
|
||||
The kVSFSysStrOpenUnknown enumerator is not part of the
|
||||
EVSFSysUtilOpenMode enum. The assignment causes a build failure with
|
||||
gcc 10.
|
||||
|
||||
The open_mode variable need not be initialized, because the switch
|
||||
statement either sets the variable or causes us to exit.
|
||||
|
||||
Resolves: rhbz#1800239
|
||||
---
|
||||
sysstr.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/sysstr.c b/sysstr.c
|
||||
index d86cdf1..ff2671b 100644
|
||||
--- a/sysstr.c
|
||||
+++ b/sysstr.c
|
||||
@@ -74,7 +74,7 @@ str_chdir(const struct mystr* p_str)
|
||||
int
|
||||
str_open(const struct mystr* p_str, const enum EVSFSysStrOpenMode mode)
|
||||
{
|
||||
- enum EVSFSysUtilOpenMode open_mode = kVSFSysStrOpenUnknown;
|
||||
+ enum EVSFSysUtilOpenMode open_mode;
|
||||
switch (mode)
|
||||
{
|
||||
case kVSFSysStrOpenReadOnly:
|
||||
--
|
||||
2.24.1
|
||||
|
28
fix-str_open.patch
Normal file
28
fix-str_open.patch
Normal file
@ -0,0 +1,28 @@
|
||||
diff -ruN vsftpd-3.0.3.orig/sysstr.c vsftpd-3.0.3/sysstr.c
|
||||
--- vsftpd-3.0.3.orig/sysstr.c 2020-11-17 09:47:03.872923383 +0100
|
||||
+++ vsftpd-3.0.3/sysstr.c 2020-11-17 09:48:41.219754145 +0100
|
||||
@@ -74,19 +74,11 @@
|
||||
int
|
||||
str_open(const struct mystr* p_str, const enum EVSFSysStrOpenMode mode)
|
||||
{
|
||||
- enum EVSFSysUtilOpenMode open_mode = kVSFSysStrOpenUnknown;
|
||||
- switch (mode)
|
||||
- {
|
||||
- case kVSFSysStrOpenReadOnly:
|
||||
- open_mode = kVSFSysUtilOpenReadOnly;
|
||||
- break;
|
||||
- case kVSFSysStrOpenUnknown:
|
||||
- /* Fall through */
|
||||
- default:
|
||||
- bug("unknown mode value in str_open");
|
||||
- break;
|
||||
- }
|
||||
- return vsf_sysutil_open_file(str_getbuf(p_str), open_mode);
|
||||
+ if (mode == kVSFSysStrOpenReadOnly)
|
||||
+ return vsf_sysutil_open_file(str_getbuf(p_str), kVSFSysUtilOpenReadOnly);
|
||||
+
|
||||
+ bug("unknown mode value in str_open");
|
||||
+ return -1;
|
||||
}
|
||||
|
||||
int
|
@ -92,10 +92,10 @@ Patch62: 0002-Prevent-recursion-in-bug.patch
|
||||
Patch63: 0001-Set-s_uwtmp_inserted-only-after-record-insertion-rem.patch
|
||||
Patch64: 0002-Repeat-pututxline-if-it-fails-with-EINTR.patch
|
||||
Patch65: 0001-Repeat-pututxline-until-it-succeeds-if-it-fails-with.patch
|
||||
Patch66: 0001-Fix-assignment-of-an-enumerator-of-a-different-type.patch
|
||||
Patch67: 0001-Fix-timestamp-handling-in-MDTM.patch
|
||||
Patch68: 0002-Drop-an-unused-global-variable.patch
|
||||
Patch69: 0001-Remove-a-hint-about-the-ftp_home_dir-SELinux-boolean.patch
|
||||
Patch70: fix-str_open.patch
|
||||
|
||||
%description
|
||||
vsftpd is a Very Secure FTP daemon. It was written completely from
|
||||
|
Loading…
Reference in New Issue
Block a user