Skip to content

Commit 2e8ff29

Browse files
RaumZeitffurrer2
authored andcommitted
Fix potential regex injection from user-provided version_prefix
1 parent aaf926a commit 2e8ff29

File tree

1 file changed

+6
-2
lines changed

1 file changed

+6
-2
lines changed

src/index.js

+6-2
Original file line numberDiff line numberDiff line change
@@ -41,10 +41,10 @@ async function extractReleaseNotes(changelogFile, prerelease, versionPrefix, hea
4141
})
4242
const lines = []
4343
let inside_release = false
44-
const header_level = (Number.isInteger(headerLevel) && (headerLevel > 0) && (headerLevel < 7)) ? headerLevel : 2
44+
const header_level = (Number.isInteger(headerLevel) && (headerLevel > 0) && (headerLevel < 7)) ? +headerLevel : 2
4545
const level_match_regex = "^#{" + header_level + "}\\s+"
4646
const levelup_match_regex = (header_level > 1) ? "^#{1," + (header_level - 1) + "}\\s+" : level_match_regex
47-
const version_match_regex = "\\[" + versionPrefix + "\\s*[0-9]"
47+
const version_match_regex = "\\[" + escapeRegex(versionPrefix) + "\\s*[0-9]"
4848
const unreleases_match_regex = "\\[Unreleased\\]"
4949
core.debug(`version_match_regex: '${version_match_regex}'`)
5050
core.debug(`unrelease_match_regex: '${unreleases_match_regex}'`)
@@ -93,3 +93,7 @@ function writeReleaseNotesFile(releaseNotesFile, releaseNotes) {
9393
})
9494
}
9595
}
96+
97+
function escapeRegex(string) {
98+
return string.replace(/[/\-\\^$*+?.()|[\]{}]/g, '\\$&');
99+
}

0 commit comments

Comments
 (0)