aboutsummaryrefslogtreecommitdiffstats
path: root/main/doxygen/fix-segfault.patch
diff options
context:
space:
mode:
Diffstat (limited to 'main/doxygen/fix-segfault.patch')
-rw-r--r--main/doxygen/fix-segfault.patch83
1 files changed, 0 insertions, 83 deletions
diff --git a/main/doxygen/fix-segfault.patch b/main/doxygen/fix-segfault.patch
deleted file mode 100644
index 6dc4cf4840b..00000000000
--- a/main/doxygen/fix-segfault.patch
+++ /dev/null
@@ -1,83 +0,0 @@
-From 11bd374ea216b561deaf9be675ddd8941b80a487 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?=C3=89rico=20Nogueira?= <erico.erc@gmail.com>
-Date: Sun, 29 Aug 2021 01:07:27 -0300
-Subject: [PATCH] Fix memory corruption in TextStream.
-
-This resulted in observable crashes with musl libc due to corruption in
-malloc, but could also be observed in valgrind, when building GNU
-Radio's doxygen docs. One of the valgrind errors is reproduced below.
-
-==26== Invalid read of size 4
-==26== at 0x405A62D: fwrite (fwrite.c:32)
-==26== by 0x47154D: flush (textstream.h:181)
-==26== by 0x47154D: setFile (textstream.h:74)
-==26== by 0x47154D: OutputGenerator::startPlainFile(QCString const&) (outputgen.cpp:69)
-==26== by 0x2EFF57: HtmlGenerator::startFile(QCString const&, QCString const&, QCString const&, int) (htmlgen.cpp:1121)
-==26== by 0x3083EC: forall<OutputGenerator, const QCString&, const QCString&, const QCString&, int, const QCString&, const QCString&, const QCString&, int&> (outputlist.h:512)
-==26== by 0x3083EC: startFile (outputlist.h:91)
-==26== by 0x3083EC: startFile(OutputList&, QCString const&, QCString const&, QCString const&, HighlightedItem, bool, QCString const&) (index.cpp:240)
-==26== by 0x296807: FileDefImpl::writeSourceHeader(OutputList&) (filedef.cpp:1110)
-==26== by 0x276751: generateFileSources() (doxygen.cpp:7971)
-==26== by 0x277793: generateOutput() (doxygen.cpp:11992)
-==26== by 0x21173E: main (main.cpp:38)
-==26== Address 0x130bb62c is 140 bytes inside a block of size 1,264 free'd
-==26== at 0x48BAA4B: free (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
-==26== by 0x40585D0: fclose (fclose.c:35)
-==26== by 0x4DCE5D7: std::__basic_file<char>::close() (in /usr/lib/libstdc++.so.6.0.28)
-==26== by 0x4E1D676: std::basic_filebuf<char, std::char_traits<char> >::close() (in /usr/lib/libstdc++.so.6.0.28)
-==26== by 0x4B055C: ~basic_filebuf (fstream:249)
-==26== by 0x4B055C: ~basic_ofstream (fstream:863)
-==26== by 0x4B055C: writeJavaScriptSearchIndex() (searchindex.cpp:923)
-==26== by 0x2776F0: generateOutput() (doxygen.cpp:11957)
-==26== by 0x21173E: main (main.cpp:38)
-==26== Block was alloc'd at
-==26== at 0x48B981F: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
-==26== by 0x40578FE: fdopen (__fdopen.c:21)
-==26== by 0x405943E: fopen (fopen.c:26)
-==26== by 0x4DCE55F: std::__basic_file<char>::open(char const*, std::_Ios_Openmode, int) (in /usr/lib/libstdc++.so.6.0.28)
-==26== by 0x4E1E19A: std::basic_filebuf<char, std::char_traits<char> >::open(char const*, std::_Ios_Openmode) (in /usr/lib/libstdc++.so.6.0.28)
-==26== by 0x4B0470: open (fstream:332)
-==26== by 0x4B0470: open (fstream:962)
-==26== by 0x4B0470: basic_ofstream (fstream:830)
-==26== by 0x4B0470: writeJavaScriptSearchIndex() (searchindex.cpp:923)
-==26== by 0x2776F0: generateOutput() (doxygen.cpp:11957)
-==26== by 0x21173E: main (main.cpp:38)
-
-What was happening is that the TextStream object is reused for multiple
-different files. Therefore, when one calls setStream(nullptr) or
-setFile(nullptr), m_f or m_s will, respectively, still contain a pointer
-to the previous member, which is used when one calls setFile() or
-setStream() again, since these methods will call flush().
-
-For example, a program doing
-
- s.setFile(f1);
- s.setStream(nullptr);
- fclose(f1);
- s.setFile(f2);
-
-will call fwrite(f1, ...). This pattern can be observed in many parts of
-Doxygen, so fixing it in TextStream itself by always zeroing the other
-pointer is the simplest fix.
----
- src/textstream.h | 2 ++
- 1 file changed, 2 insertions(+)
-
-diff --git a/src/textstream.h b/src/textstream.h
-index 161ce7fe1..38027ec07 100644
---- a/src/textstream.h
-+++ b/src/textstream.h
-@@ -67,11 +67,13 @@ class TextStream final
- {
- flush();
- m_s = s;
-+ m_f = nullptr;
- }
-
- void setFile(FILE *f)
- {
- flush();
-+ m_s = nullptr;
- m_f = f;
- }
-