| Summary: | assert in KProtocolInfoFactory::findProtocol() crashes Konqueror with invalid URLs | ||
|---|---|---|---|
| Product: | [Applications] konqueror | Reporter: | Jonathan Marten <jjm> |
| Component: | general | Assignee: | Konqueror Bugs <konqueror-bugs-null> |
| Status: | RESOLVED FIXED | ||
| Severity: | crash | ||
| Priority: | NOR | ||
| Version First Reported In: | Git | ||
| Target Milestone: | --- | ||
| Platform: | Other | ||
| OS: | Linux | ||
| Latest Commit: | Version Fixed/Implemented In: | ||
| Sentry Crash Report: | |||
|
Description
Jonathan Marten
2018-04-25 11:17:20 UTC
Review to fix second case at https://phabricator.kde.org/D12608 Thank you for the crash report. As it has been a while since this was reported, can you please test and confirm if this issue is still occurring or if this bug report can be marked as resolved. I have set the bug status to "needsinfo" pending your response, please change back to "reported" or "resolved/worksforme" when you respond, thank you. The first test case still happens with current Git master. The second is resolved by the review/commit referenced in comment #2. Git commit a6a9e9e3e3abc8a6a3ffcecaf4a56c0eb837b7df by Jonathan Marten.
Committed on 17/12/2020 at 21:29.
Pushed by marten into branch 'master'.
Akregator feed plugin: Do not assert for a valid but relative URL
For example, "konqueror --part khtml foo". This passes QUrl("foo"),
a valid but relative URL with no scheme, to KonqFeedIcon::feedFound().
This then asserts when calling KProtocolInfo::protocolClass() for the
blank scheme.
Note that the test case only works with KHTML, and will not reach this
point (an assert will have already happened within KIO) unless the fix
in https://invent.kde.org/frameworks/kio/-/merge_requests/264 is
implemented.
M +1 -1 plugins/akregator/konqfeedicon.cpp
https://invent.kde.org/network/konqueror/commit/a6a9e9e3e3abc8a6a3ffcecaf4a56c0eb837b7df
The previous commit fixes another blank protocol assert for KHTML only. The main fix for the first test case is requested at https://invent.kde.org/frameworks/kio/-/merge_requests/264 Git commit b4a737f8167e21bf16b1e57ca180d9e4992c91d3 by Jonathan Marten.
Committed on 18/12/2020 at 11:59.
Pushed by marten into branch 'master'.
Do not assert if KIO::rawErrorDetail() is given a URL with no scheme
If the 'reqUrl' points to a URL that is not null but has no scheme,
e.g. QUrl("foo"), then QUrl takes it as as a valid relative URL.
However, the blank scheme is passed to KProtocolInfo::protocolClass()
which asserts.
This can be triggered by, e.g. "konqueror --part webenginepart foo"
where the "foo" generates a relative URL.
Check that the scheme is not empty before calling protocolClass().
M +6 -1 src/core/job_error.cpp
https://invent.kde.org/frameworks/kio/commit/b4a737f8167e21bf16b1e57ca180d9e4992c91d3
All test cases fixed by above commits. |