Fix(ts): escape doc comment terminator in generated JSDoc #8820
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Summary
*/terminator in TypeScript doc comments before emitting them into/** ... */JSDoc blocks.doc_commentlines from closing the JSDoc block and injecting top‑level JavaScript into the generated module.Root cause
src/idl_gen_ts.cpp::GenDocCommentpreviously wrote" *" + line + "\n"directly into a JSDoc block without escaping*/..fbsdoc line such as*/console.log('PWNED_TS_RCE_FROM_GENERATED_CODE')/*would:*/),console.log(...)as top‑level JS that runs on import/bundling,/*) so the final*/from the generator still parses.Fix
GenDocComment, copy it into a localsafestring and replace all occurrences of*/with*\/before writing it into the JSDoc block./** ... */JSDoc block (so IDE/tooling hover docs still work), but user‑controlled docs can no longer terminate the comment and inject code.Notes
// ...) to make early termination impossible by construction./** ... */JSDoc for hover documentation and IntelliSense, this change implements the minimal, backwards‑compatible escape‑based fix first.Fixes #8725.