fix(ghidra): validate Windows control characters explicitly

This commit is contained in:
N0zoM1z0 authored and N0zoM1z0 committed 2026-07-17 03:05:19 +09:00
1 parent 8b5ae417f3
commit 4dccbecf06
3 files changed
+15 -9

No files matched your search

@@ -24,7 +24,7 @@
<li><span><span class="tsd-kind-parameter">options</span>: <a href="../interfaces/ghidra_GhidraLauncher.GhidraHeadlessArgumentOptions.html" class="tsd-signature-type tsd-kind-interface">GhidraHeadlessArgumentOptions</a></span></li></ul></div>
<h4 class="tsd-returns-title">Returns <span class="tsd-signature-keyword">readonly</span> <span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">[]</span></h4><aside class="tsd-sources">
<ul>
<li>Defined in <a href="https://github.com/morluto/rea/blob/main/src/ghidra/GhidraLauncher.ts#L250">src/ghidra/GhidraLauncher.ts:250</a></li></ul></aside></div></li></ul></section></div>
<li>Defined in <a href="https://github.com/morluto/rea/blob/main/src/ghidra/GhidraLauncher.ts#L256">src/ghidra/GhidraLauncher.ts:256</a></li></ul></aside></div></li></ul></section></div>
<div class="col-sidebar">
<div class="page-menu">
<div class="tsd-navigation settings">
@@ -16,7 +16,7 @@
</div></section>
<div class="tsd-signature"><span class="tsd-signature-keyword">interface</span> <span class="tsd-kind-interface">GhidraHeadlessArgumentOptions</span> <span class="tsd-signature-symbol">{</span><br/>    <a class="tsd-kind-property" href="#bridgescriptpath">bridgeScriptPath</a><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">;</span><br/>    <a class="tsd-kind-property" href="#descriptorpath">descriptorPath</a><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">;</span><br/>    <a class="tsd-kind-property" href="#ghidralogpath">ghidraLogPath</a><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">;</span><br/>    <a class="tsd-kind-property" href="#projectroot">projectRoot</a><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">;</span><br/>    <a class="tsd-kind-property" href="#scriptlogpath">scriptLogPath</a><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">;</span><br/>    <a class="tsd-kind-property" href="#targetpath">targetPath</a><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">;</span><br/><span class="tsd-signature-symbol">}</span></div><aside class="tsd-sources">
<ul>
<li>Defined in <a href="https://github.com/morluto/rea/blob/main/src/ghidra/GhidraLauncher.ts#L240">src/ghidra/GhidraLauncher.ts:240</a></li></ul></aside>
<li>Defined in <a href="https://github.com/morluto/rea/blob/main/src/ghidra/GhidraLauncher.ts#L246">src/ghidra/GhidraLauncher.ts:246</a></li></ul></aside>
<section class="tsd-panel-group tsd-index-group">
<section class="tsd-panel tsd-index-panel">
<details class="tsd-index-content tsd-accordion" open><summary class="tsd-accordion-summary tsd-index-summary"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-chevronDown"></use></svg>
@@ -38,32 +38,32 @@
<h3 class="tsd-anchor-link" id="bridgescriptpath"><code class="tsd-tag">Readonly</code><span>bridge<wbr/>Script<wbr/>Path</span><a href="#bridgescriptpath" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3>
<div class="tsd-signature"><span class="tsd-kind-property">bridgeScriptPath</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">string</span></div><aside class="tsd-sources">
<ul>
<li>Defined in <a href="https://github.com/morluto/rea/blob/main/src/ghidra/GhidraLauncher.ts#L243">src/ghidra/GhidraLauncher.ts:243</a></li></ul></aside></section>
<li>Defined in <a href="https://github.com/morluto/rea/blob/main/src/ghidra/GhidraLauncher.ts#L249">src/ghidra/GhidraLauncher.ts:249</a></li></ul></aside></section>
<section class="tsd-panel tsd-member">
<h3 class="tsd-anchor-link" id="descriptorpath"><code class="tsd-tag">Readonly</code><span>descriptor<wbr/>Path</span><a href="#descriptorpath" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3>
<div class="tsd-signature"><span class="tsd-kind-property">descriptorPath</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">string</span></div><aside class="tsd-sources">
<ul>
<li>Defined in <a href="https://github.com/morluto/rea/blob/main/src/ghidra/GhidraLauncher.ts#L244">src/ghidra/GhidraLauncher.ts:244</a></li></ul></aside></section>
<li>Defined in <a href="https://github.com/morluto/rea/blob/main/src/ghidra/GhidraLauncher.ts#L250">src/ghidra/GhidraLauncher.ts:250</a></li></ul></aside></section>
<section class="tsd-panel tsd-member">
<h3 class="tsd-anchor-link" id="ghidralogpath"><code class="tsd-tag">Readonly</code><span>ghidra<wbr/>Log<wbr/>Path</span><a href="#ghidralogpath" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3>
<div class="tsd-signature"><span class="tsd-kind-property">ghidraLogPath</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">string</span></div><aside class="tsd-sources">
<ul>
<li>Defined in <a href="https://github.com/morluto/rea/blob/main/src/ghidra/GhidraLauncher.ts#L245">src/ghidra/GhidraLauncher.ts:245</a></li></ul></aside></section>
<li>Defined in <a href="https://github.com/morluto/rea/blob/main/src/ghidra/GhidraLauncher.ts#L251">src/ghidra/GhidraLauncher.ts:251</a></li></ul></aside></section>
<section class="tsd-panel tsd-member">
<h3 class="tsd-anchor-link" id="projectroot"><code class="tsd-tag">Readonly</code><span>project<wbr/>Root</span><a href="#projectroot" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3>
<div class="tsd-signature"><span class="tsd-kind-property">projectRoot</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">string</span></div><aside class="tsd-sources">
<ul>
<li>Defined in <a href="https://github.com/morluto/rea/blob/main/src/ghidra/GhidraLauncher.ts#L241">src/ghidra/GhidraLauncher.ts:241</a></li></ul></aside></section>
<li>Defined in <a href="https://github.com/morluto/rea/blob/main/src/ghidra/GhidraLauncher.ts#L247">src/ghidra/GhidraLauncher.ts:247</a></li></ul></aside></section>
<section class="tsd-panel tsd-member">
<h3 class="tsd-anchor-link" id="scriptlogpath"><code class="tsd-tag">Readonly</code><span>script<wbr/>Log<wbr/>Path</span><a href="#scriptlogpath" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3>
<div class="tsd-signature"><span class="tsd-kind-property">scriptLogPath</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">string</span></div><aside class="tsd-sources">
<ul>
<li>Defined in <a href="https://github.com/morluto/rea/blob/main/src/ghidra/GhidraLauncher.ts#L246">src/ghidra/GhidraLauncher.ts:246</a></li></ul></aside></section>
<li>Defined in <a href="https://github.com/morluto/rea/blob/main/src/ghidra/GhidraLauncher.ts#L252">src/ghidra/GhidraLauncher.ts:252</a></li></ul></aside></section>
<section class="tsd-panel tsd-member">
<h3 class="tsd-anchor-link" id="targetpath"><code class="tsd-tag">Readonly</code><span>target<wbr/>Path</span><a href="#targetpath" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3>
<div class="tsd-signature"><span class="tsd-kind-property">targetPath</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">string</span></div><aside class="tsd-sources">
<ul>
<li>Defined in <a href="https://github.com/morluto/rea/blob/main/src/ghidra/GhidraLauncher.ts#L242">src/ghidra/GhidraLauncher.ts:242</a></li></ul></aside></section></section></details></div>
<li>Defined in <a href="https://github.com/morluto/rea/blob/main/src/ghidra/GhidraLauncher.ts#L248">src/ghidra/GhidraLauncher.ts:248</a></li></ul></aside></section></section></details></div>
<div class="col-sidebar">
<div class="page-menu">
<div class="tsd-navigation settings">
+7 -1
View File
@@ -221,7 +221,13 @@ export const ghidraHeadlessCommand = (options: {
};
const quoteWindowsBatchToken = (value: string): string => {
if (value.length === 0 || /[\u0000\r\n"%^!&|<>]/u.test(value))
if (
value.length === 0 ||
value.includes("\0") ||
value.includes("\r") ||
value.includes("\n") ||
/["%^!&|<>]/u.test(value)
)
throw new GhidraLaunchError(
"Windows Ghidra P0 paths cannot contain command-interpreter metacharacters",
);