Skip to content

Commit b89b953

Browse files
committed
fix(updating): guard incomplete checksums and deduplicate SFW logic
- Add else clause when oldHash is undefined so allFound is set to false, preventing version bump with missing checksum entries - Deduplicate download-and-hash logic in fetchSfwChecksums by computing the URL once before the shared try/catch block
1 parent 8ec6af6 commit b89b953

1 file changed

Lines changed: 17 additions & 29 deletions

File tree

.claude/hooks/setup-security-tools/update.mts

Lines changed: 17 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -283,6 +283,9 @@ async function updateZizmor(source: string): Promise<{
283283
logger.log(` ${assetName}: ${oldHash.slice(0, 12)}... -> ${newHash.slice(0, 12)}...`)
284284
} else if (oldHash === newHash) {
285285
logger.log(` ${assetName}: unchanged`)
286+
} else {
287+
logger.warn(` ${assetName}: no existing checksum entry found in source`)
288+
allFound = false
286289
}
287290
}
288291

@@ -349,36 +352,21 @@ async function fetchSfwChecksums(
349352

350353
for (const { 0: platform, 1: assetName } of Object.entries(assetNames)) {
351354
const asset = release.assets.find(a => a.name === assetName)
352-
if (!asset) {
353-
// Use latest/download URL pattern for sfw (uses /releases/latest/download/).
354-
const url = `https://github.com/${repo}/releases/latest/download/${assetName}`
355-
logger.log(` Computing checksum for ${assetName}...`)
356-
try {
357-
const hash = await downloadAndHash(url)
358-
newChecksums[platform] = hash
359-
if (currentChecksums[platform] !== hash) {
360-
logger.log(` ${platform}: ${(currentChecksums[platform] ?? '').slice(0, 12)}... -> ${hash.slice(0, 12)}...`)
361-
changed = true
362-
}
363-
} catch (e) {
364-
const msg = e instanceof Error ? e.message : String(e)
365-
logger.warn(` Failed to download ${assetName}: ${msg}`)
366-
newChecksums[platform] = currentChecksums[platform] ?? ''
367-
}
368-
} else {
369-
logger.log(` Computing checksum for ${assetName}...`)
370-
try {
371-
const hash = await downloadAndHash(asset.browser_download_url)
372-
newChecksums[platform] = hash
373-
if (currentChecksums[platform] !== hash) {
374-
logger.log(` ${platform}: ${(currentChecksums[platform] ?? '').slice(0, 12)}... -> ${hash.slice(0, 12)}...`)
375-
changed = true
376-
}
377-
} catch (e) {
378-
const msg = e instanceof Error ? e.message : String(e)
379-
logger.warn(` Failed to download ${assetName}: ${msg}`)
380-
newChecksums[platform] = currentChecksums[platform] ?? ''
355+
const url = asset
356+
? asset.browser_download_url
357+
: `https://github.com/${repo}/releases/latest/download/${assetName}`
358+
logger.log(` Computing checksum for ${assetName}...`)
359+
try {
360+
const hash = await downloadAndHash(url)
361+
newChecksums[platform] = hash
362+
if (currentChecksums[platform] !== hash) {
363+
logger.log(` ${platform}: ${(currentChecksums[platform] ?? '').slice(0, 12)}... -> ${hash.slice(0, 12)}...`)
364+
changed = true
381365
}
366+
} catch (e) {
367+
const msg = e instanceof Error ? e.message : String(e)
368+
logger.warn(` Failed to download ${assetName}: ${msg}`)
369+
newChecksums[platform] = currentChecksums[platform] ?? ''
382370
}
383371
}
384372

0 commit comments

Comments
 (0)