Compare commits

..

3 Commits

Author SHA1 Message Date
Y. Meyer-Norwood
d3fe023418 Merge d86d1a437e into d632683dd7 2024-09-26 22:09:13 +05:30
Y. Meyer-Norwood
d86d1a437e Merge branch 'main' into patch-1 2024-01-16 08:51:56 +13:00
Y. Meyer-Norwood
fe77b196f4 Prevent Script Injection Attack
The user provided inputs here are vulnerable to script injection. This PR uses an intermediary environment variable to treat the input as a string, rather than as part of the command.

See: https://docs.github.com/en/actions/security-guides/security-hardening-for-github-actions#using-an-intermediate-environment-variable
2022-12-13 11:16:31 +13:00
8 changed files with 12 additions and 42 deletions

View File

@@ -1,20 +0,0 @@
name: 'Publish Immutable Action Version'
on:
release:
types: [published]
jobs:
publish:
runs-on: ubuntu-latest
permissions:
contents: read
id-token: write
packages: write
steps:
- name: Checking out
uses: actions/checkout@v4
- name: Publish
id: publish
uses: actions/publish-immutable-action@0.0.3

View File

@@ -18,6 +18,9 @@ on:
jobs: jobs:
tag: tag:
runs-on: ubuntu-latest runs-on: ubuntu-latest
env:
TARGET: ${{ github.event.inputs.target }}
MAIN_VERSION: ${{ github.event.inputs.major_version }}
steps: steps:
# Note this update workflow can also be used as a rollback tool. # Note this update workflow can also be used as a rollback tool.
# For that reason, it's best to pin `actions/checkout` to a known, stable version # For that reason, it's best to pin `actions/checkout` to a known, stable version
@@ -30,6 +33,6 @@ jobs:
git config user.name "github-actions[bot]" git config user.name "github-actions[bot]"
git config user.email "41898282+github-actions[bot]@users.noreply.github.com" git config user.email "41898282+github-actions[bot]@users.noreply.github.com"
- name: Tag new target - name: Tag new target
run: git tag -f ${{ github.event.inputs.major_version }} ${{ github.event.inputs.target }} run: git tag -f "$MAIN_VERSION" "$TARGET"
- name: Push new tag - name: Push new tag
run: git push origin ${{ github.event.inputs.major_version }} --force run: git push origin "$MAIN_VERSION" --force

View File

@@ -1,8 +1,5 @@
# Changelog # Changelog
## v4.2.1
* Check out other refs/* by commit if provided, fall back to ref by @orhantoy in https://github.com/actions/checkout/pull/1924
## v4.2.0 ## v4.2.0
* Add Ref and Commit outputs by @lucacome in https://github.com/actions/checkout/pull/1180 * Add Ref and Commit outputs by @lucacome in https://github.com/actions/checkout/pull/1180

View File

@@ -77,16 +77,6 @@ describe('ref-helper tests', () => {
expect(checkoutInfo.startPoint).toBeFalsy() expect(checkoutInfo.startPoint).toBeFalsy()
}) })
it('getCheckoutInfo refs/ without commit', async () => {
const checkoutInfo = await refHelper.getCheckoutInfo(
git,
'refs/non-standard-ref',
''
)
expect(checkoutInfo.ref).toBe('refs/non-standard-ref')
expect(checkoutInfo.startPoint).toBeFalsy()
})
it('getCheckoutInfo unqualified branch only', async () => { it('getCheckoutInfo unqualified branch only', async () => {
git.branchExists = jest.fn(async (remote: boolean, pattern: string) => { git.branchExists = jest.fn(async (remote: boolean, pattern: string) => {
return true return true

4
dist/index.js vendored
View File

@@ -2005,8 +2005,8 @@ function getCheckoutInfo(git, ref, commit) {
result.ref = ref; result.ref = ref;
} }
// refs/ // refs/
else if (upperRef.startsWith('REFS/')) { else if (upperRef.startsWith('REFS/') && commit) {
result.ref = commit ? commit : ref; result.ref = commit;
} }
// Unqualified ref, check for a matching branch or tag // Unqualified ref, check for a matching branch or tag
else { else {

4
package-lock.json generated
View File

@@ -1,12 +1,12 @@
{ {
"name": "checkout", "name": "checkout",
"version": "4.2.1", "version": "4.2.0",
"lockfileVersion": 3, "lockfileVersion": 3,
"requires": true, "requires": true,
"packages": { "packages": {
"": { "": {
"name": "checkout", "name": "checkout",
"version": "4.2.1", "version": "4.2.0",
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"@actions/core": "^1.10.1", "@actions/core": "^1.10.1",

View File

@@ -1,6 +1,6 @@
{ {
"name": "checkout", "name": "checkout",
"version": "4.2.1", "version": "4.2.0",
"description": "checkout action", "description": "checkout action",
"main": "lib/main.js", "main": "lib/main.js",
"scripts": { "scripts": {

View File

@@ -46,8 +46,8 @@ export async function getCheckoutInfo(
result.ref = ref result.ref = ref
} }
// refs/ // refs/
else if (upperRef.startsWith('REFS/')) { else if (upperRef.startsWith('REFS/') && commit) {
result.ref = commit ? commit : ref result.ref = commit
} }
// Unqualified ref, check for a matching branch or tag // Unqualified ref, check for a matching branch or tag
else { else {