Skip to content

Commit d493b75

Browse files
committed
Disallow loading remote images in the chat pane
1 parent 0e263c4 commit d493b75

File tree

2 files changed

+9
-0
lines changed

2 files changed

+9
-0
lines changed

src/vs/base/browser/markdownRenderer.ts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ export interface MarkdownRenderOptions extends FormattedTextRenderOptions {
3535
readonly codeBlockRendererSync?: (languageId: string, value: string) => HTMLElement;
3636
readonly asyncRenderCallback?: () => void;
3737
readonly fillInIncompleteTokens?: boolean;
38+
readonly disallowRemoteImages?: boolean;
3839
}
3940

4041
const defaultMarkedRenderers = Object.freeze({
@@ -274,6 +275,13 @@ export function renderMarkdown(markdown: IMarkdownString, options: MarkdownRende
274275
} catch (err) { }
275276

276277
img.setAttribute('src', _href(href, true));
278+
279+
if (options.disallowRemoteImages) {
280+
const uriScheme = URI.parse(href).scheme;
281+
if (uriScheme !== Schemas.file && uriScheme !== Schemas.data) {
282+
img.replaceWith(DOM.$('', undefined, img.outerHTML));
283+
}
284+
}
277285
}
278286
});
279287

src/vs/workbench/contrib/chat/browser/chatListRenderer.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -965,6 +965,7 @@ export class ChatListItemRenderer extends Disposable implements ITreeRenderer<Ch
965965
const codeblocks: IChatCodeBlockInfo[] = [];
966966
let codeBlockIndex = 0;
967967
const result = this.renderer.render(markdown, {
968+
disallowRemoteImages: true,
968969
fillInIncompleteTokens,
969970
codeBlockRendererSync: (languageId, text) => {
970971
const index = codeBlockIndex++;

0 commit comments

Comments
 (0)