Hey Stephan,
On Fri, Jun 17, 2016 at 9:38 AM, Stephan Bergmann <sbergman@redhat.com>
wrote:
On 06/15/2016 09:52 PM, Markus Mohrhard wrote:
commit b5876bfcb69a65c87d602bae687b3c0634c0a1e7
Author: Markus Mohrhard <markus.mohrhard@googlemail.com>
Date: Wed Jun 15 20:15:20 2016 +0200
passing a NULL pointer to fileno is not allowed
See crash reports at
http://crashreport.libreoffice.org/stats/signature/do_msvcr_magic+0x7
and documentation at
https://msdn.microsoft.com/en-us/library/zs6wbdhx.aspx
Change-Id: Ia9166d3b9fa10b87585821504e39cdfecbd22eda
Reviewed-on: https://gerrit.libreoffice.org/26317
Reviewed-by: Michael Stahl <mstahl@redhat.com>
Tested-by: Markus Mohrhard <markus.mohrhard@googlemail.com>
diff --git a/jvmfwk/plugins/sunmajor/pluginlib/sunjavaplugin.cxx
b/jvmfwk/plugins/sunmajor/pluginlib/sunjavaplugin.cxx
index fad3c0a9..43ddc82 100644
--- a/jvmfwk/plugins/sunmajor/pluginlib/sunjavaplugin.cxx
+++ b/jvmfwk/plugins/sunmajor/pluginlib/sunjavaplugin.cxx
@@ -548,6 +548,9 @@ static void do_msvcr_magic(rtl_uString *jvm_dll)
FILE *f = _wfopen(reinterpret_cast<LPCWSTR>(Module->buffer), L"rb");
+ if (!f)
+ return;
+
if (fstat(fileno(f), &st) == -1)
{
fclose(f);
What I don't quite understand is: <
https://cgit.freedesktop.org/libreoffice/core/commit/?id=a82e532ce006c54b2740de74d1da5d11307da7c1>
"fdo#38913: Prevent invalid parameter handler crashes" establishes a
_set_invalid_parameter_handler (that outputs to std::wcerr and then
returns), so one would assume that calling fileno(nullptr) would not abort
via MSVCR's _invalid_parameter_noinfo (see <
http://crashreport.libreoffice.org/stats/crash_details/8e1e262d-3281-431c-89b5-a5642033fe94>)
but rather return EINVAL.
If breakpad is enabled it overwrites the invalid parameter handler. We can
of course change that behavior (just a different flag to the breakpad init
code) but at least I think that it is a good thing to not ignore these
errors.
Regards,
Markus
Context
Privacy Policy |
Impressum (Legal Info) |
Copyright information: Unless otherwise specified, all text and images
on this website are licensed under the
Creative Commons Attribution-Share Alike 3.0 License.
This does not include the source code of LibreOffice, which is
licensed under the Mozilla Public License (
MPLv2).
"LibreOffice" and "The Document Foundation" are
registered trademarks of their corresponding registered owners or are
in actual use as trademarks in one or more countries. Their respective
logos and icons are also subject to international copyright laws. Use
thereof is explained in our
trademark policy.