security: strip deceptive Unicode characters from terminal output (#19026)

Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
This commit is contained in:
Emily Hedlund
2026-02-20 15:04:32 -05:00
committed by GitHub
parent 7cf4c05c66
commit aed348a99c
7 changed files with 109 additions and 11 deletions

View File

@@ -17,6 +17,7 @@ import {
} from 'ink';
import { theme } from '../semantic-colors.js';
import { RenderInline } from './InlineMarkdownRenderer.js';
import { stripUnsafeCharacters } from './textUtils.js';
interface TableRendererProps {
headers: string[];
@@ -60,12 +61,18 @@ export const TableRenderer: React.FC<TableRendererProps> = ({
);
const styledHeaders = useMemo(
() => cleanedHeaders.map((header) => toStyledCharacters(header)),
() =>
cleanedHeaders.map((header) =>
toStyledCharacters(stripUnsafeCharacters(header)),
),
[cleanedHeaders],
);
const styledRows = useMemo(
() => rows.map((row) => row.map((cell) => toStyledCharacters(cell))),
() =>
rows.map((row) =>
row.map((cell) => toStyledCharacters(stripUnsafeCharacters(cell))),
),
[rows],
);