GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — Run tar from its resolved path when extracting zstd bundles by henrymercer · Pull Request #4281 · github/codeql-action

Conversation

@henrymercer

@henrymercer henrymercer commented Oct 30, 2026

Copy link
Copy Markdown
Contributor

extractTarZst ran tar by name. On Windows, child_process.spawn by default looks for a bare command name in the current directory before searching PATH, so this could run a different tar from the one that getTarVersion checked. In practice, this only affects Windows runners with a tools input that points to a .tar.zst bundle, since the Action otherwise uses gzip bundles on Windows.

This PR records the path that getTarVersion resolves with io.which, which only searches PATH, and runs that path. The [command] log line and error messages now show this resolved path. On Linux and macOS, where zstd bundles are the default, this should otherwise run the same tar as before.

It also fixes stdout and stderr being passed to CommandInvocationError the wrong way round, so when tar exits with an error, the error message now includes the last line of tar's stderr rather than its stdout.

Risk assessment

For internal use only. Please select the risk level of this change:

  • Low risk: Changes are fully under feature flags, or have been fully tested and validated in pre-production environments and are highly observable, or are documentation or test only.

Which use cases does this change impact?

Workflow types:

  • Advanced setup - Impacts users who have custom CodeQL workflows.
  • Managed - Impacts users with dynamic workflows (Default Setup, Code Quality, ...).

Products:

  • Code Scanning - The changes impact analyses when analysis-kinds: code-scanning.
  • Code Quality - The changes impact analyses when analysis-kinds: code-quality.
  • Other first-party - The changes impact other first-party analyses.
  • Third-party analyses - The changes affect the upload-sarif action.

Environments:

  • Dotcom - Impacts CodeQL workflows on github.com and/or GitHub Enterprise Cloud with Data Residency.
  • GHES - Impacts CodeQL workflows on GitHub Enterprise Server.

How did/will you validate this change?

  • End-to-end tests - I am depending on PR checks (i.e. tests in pr-checks).
  • Other - I checked manually that when tar exits with an error, the error message includes the last line of tar's stderr.

If something goes wrong after this change is released, what are the mitigation and rollback strategies?

  • Rollback - Change can only be disabled by rolling back the release or releasing a new version with a fix.

How will you know if something goes wrong after this change is released?

  • Telemetry - I rely on existing telemetry or have made changes to the telemetry.

Are there any special considerations for merging or releasing this change?

  • No special considerations - This change can be merged at any time.

Merge / deployment checklist

  • Confirm this change is backwards compatible with existing workflows.
  • Consider adding a changelog entry for this change.
  • Confirm the readme and docs have been updated if necessary.

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions
henrymercer and others added 2 commits October 30, 2026 17:10
@henrymercer
Extract zstd bundles using the tar path found by getTarVersion
0b97d53
Co-authored-by: Copilot App <[email protected]>
@henrymercer
Fix stdout and stderr being swapped in tar extraction errors
8512f45
Co-authored-by: Copilot App <[email protected]>
Copilot AI auto review requested due to automatic review settings October 30, 2026 17:19
@github-actions github-actions Bot added the size/S Should be easy to review label Oct 30, 2026
Copilot started reviewing on behalf of henrymercer October 30, 2026 17:20
View session
Copilot AI reviewed Oct 30, 2026
View reviewed changes

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

There was a problem hiding this comment.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Changes recommended

The tests still lack coverage proving that a distinct configured tar executable is spawned, so they would not catch a reversion to the hard-coded command.

1 open issue
  • Low severity Add a regression test for spawning the configured executable path · New
1 file not reviewed
  • lib/entry-points.js: Excluded by your content exclusion settings
What changed in this PR

This PR makes zstd bundle extraction use the same tar executable whose version was checked, avoiding a different executable being selected on Windows.

Changes:

  • Records the resolved executable path and uses it for extraction, command logging, and errors.
  • Corrects stdout/stderr ordering so extraction errors report tar’s stderr.
  • Updates test fixtures with the new executable-path field.
File Description
src/​tools-download.test.ts Adds executable paths to download-test fixtures.
src/​tar.ts Uses the resolved tar path and corrects error-output handling.
src/​tar.test.ts Adds an executable path to the stream-error test fixture.

Review effort: Balanced (auto)

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions
Comment thread src/tar.ts

await new Promise<void>((resolve, reject) => {
const tarProcess = spawn("tar", args, { stdio: "pipe" });
const tarProcess = spawn(tarVersion.path, args, { stdio: "pipe" });

@henrymercer henrymercer Oct 30, 2026

Copy link
Copy Markdown
Contributor Author

There was a problem hiding this comment.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'll make a follow up improvement to the binary planting custom CodeQL query to cover this.

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions
@henrymercer
henrymercer marked this pull request as ready for review October 30, 2026 17:31
@henrymercer
henrymercer requested a review from a team as a code owner October 30, 2026 17:31
mbg
mbg approved these changes Oct 30, 2026
View reviewed changes

@mbg mbg left a comment

Copy link
Copy Markdown
Member

There was a problem hiding this comment.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM. Just one comment with a question that's not directly related to the change here.

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions
Comment thread src/tar.ts
Comment on lines -174 to +179
process.stdout.write(`[command]tar ${args.join(" ")}\n`);
process.stdout.write(`[command]${tarVersion.path} ${args.join(" ")}\n`);

await new Promise<void>((resolve, reject) => {
const tarProcess = spawn("tar", args, { stdio: "pipe" });
const tarProcess = spawn(tarVersion.path, args, { stdio: "pipe" });

@mbg mbg Oct 30, 2026

Copy link
Copy Markdown
Member

There was a problem hiding this comment.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Not a change in this PR, but is there a reason here why this doesn't use e.g. ToolRunner?

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions

@henrymercer henrymercer Oct 30, 2026

Copy link
Copy Markdown
Contributor Author

There was a problem hiding this comment.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Afaict, we can't pipe in a HTTP stream with ToolRunner.

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions
@henrymercer
henrymercer added this pull request to the merge queue Oct 30, 2026
Merged via the queue into main with commit 4f900f4 Oct 30, 2026
231 checks passed

Uh oh!

There was an error while loading. Please reload this page.

@henrymercer
henrymercer deleted the henrymercer/tar-path-in-extracttarzst branch October 30, 2026 18:05
This was referenced Nov 3, 2026
Merge main into releases/v4 #4286
Merged
Merge releases/v4 into releases/v3 #4291
Merged
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Reviewers

Copilot code review Copilot
Copilot review effort
Applies to this pull request for everyone.Learn more about Copilot code review.
Copilot left review comments
@mbg mbg mbg approved these changes

Uh oh!

There was an error while loading. Please reload this page.

Assignees

No one assigned

Labels

size/S Should be easy to review

Projects

None yet

Milestone

No milestone

Development

Successfully merging this pull request may close these issues.

Uh oh!

There was an error while loading. Please reload this page.

3 participants

@henrymercer @mbg
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.
You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.