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
|
Patch63: 0001-Set-s_uwtmp_inserted-only-after-record-insertion-rem.patch
|
||||||
Patch64: 0002-Repeat-pututxline-if-it-fails-with-EINTR.patch
|
Patch64: 0002-Repeat-pututxline-if-it-fails-with-EINTR.patch
|
||||||
Patch65: 0001-Repeat-pututxline-until-it-succeeds-if-it-fails-with.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
|
Patch67: 0001-Fix-timestamp-handling-in-MDTM.patch
|
||||||
Patch68: 0002-Drop-an-unused-global-variable.patch
|
Patch68: 0002-Drop-an-unused-global-variable.patch
|
||||||
Patch69: 0001-Remove-a-hint-about-the-ftp_home_dir-SELinux-boolean.patch
|
Patch69: 0001-Remove-a-hint-about-the-ftp_home_dir-SELinux-boolean.patch
|
||||||
|
Patch70: fix-str_open.patch
|
||||||
|
|
||||||
%description
|
%description
|
||||||
vsftpd is a Very Secure FTP daemon. It was written completely from
|
vsftpd is a Very Secure FTP daemon. It was written completely from
|
||||||
|
Loading…
Reference in New Issue
Block a user