GitHubVersionService.getFileAtVersion returns null on a non-200 API response (rate limit, transient network error, unknown SHA). Callers that treat null as "fall back to the local HEAD clone" then silently serve current HEAD content back, labelled as the historic version the caller asked for — no way to distinguish "this is really version X" from "the fetch for X failed and this is HEAD".
Fix: throw a checked exception on API failure instead of returning null, so callers can decide whether to surface an error rather than silently substituting HEAD.
(Independent security review finding on #3066, Fable.)
GitHubVersionService.getFileAtVersionreturnsnullon a non-200 API response (rate limit, transient network error, unknown SHA). Callers that treatnullas "fall back to the local HEAD clone" then silently serve current HEAD content back, labelled as the historic version the caller asked for — no way to distinguish "this is really version X" from "the fetch for X failed and this is HEAD".Fix: throw a checked exception on API failure instead of returning
null, so callers can decide whether to surface an error rather than silently substituting HEAD.(Independent security review finding on #3066, Fable.)