SECURITY: Handle incomplete quote bbcode (#18311)

This commit is contained in:
Jarek Radosz 2022-09-21 14:02:50 +02:00 committed by GitHub
parent e06b9d4a52
commit eab33af5bf
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 37 additions and 2 deletions

View File

@ -283,8 +283,9 @@ export default class PostCooked {
const $title = $(".title", $aside);
// If post/topic is not found then display username, skip controls
if (e.classList.contains("quote-post-not-found")) {
return (e.querySelector(".title").innerHTML = e.dataset.username);
if (e.classList.contains("quote-post-not-found") && $title.length) {
e.querySelector(".title").innerHTML = e.dataset.username;
return;
}
// Unless it's a full quote, allow click to expand

View File

@ -0,0 +1,21 @@
import { module, test } from "qunit";
import { setupRenderingTest } from "discourse/tests/helpers/component-test";
import { render } from "@ember/test-helpers";
import { query } from "discourse/tests/helpers/qunit-helpers";
import { hbs } from "ember-cli-htmlbars";
module("Integration | Component | Widget | post-cooked", function (hooks) {
setupRenderingTest(hooks);
test("quotes with no username and no valid topic", async function (assert) {
this.set("args", {
cooked: `<aside class=\"quote no-group quote-post-not-found\" data-post=\"1\" data-topic=\"123456\">\n<blockquote>\n<p>abcd</p>\n</blockquote>\n</aside>\n<p>Testing the issue</p>`,
});
await render(
hbs`<MountWidget @widget="post-cooked" @args={{this.args}} />`
);
assert.strictEqual(query("blockquote").innerText, "abcd");
});
});

View File

@ -442,6 +442,19 @@ eviltrout</p>
);
});
test("Incomplete quotes", function (assert) {
assert.cookedOptions(
'[quote=", post: 1"]\na quote\n[/quote]',
{ topicId: 2 },
`<aside class=\"quote no-group\" data-post=\"1\">
<blockquote>
<p>a quote</p>
</blockquote>
</aside>`,
"works with missing username"
);
});
test("Mentions", function (assert) {
assert.cooked(
"Hello @sam",