about summary refs log tree commit diff
path: root/compiler/rustc_codegen_ssa/src
diff options
context:
space:
mode:
authorBen Kimock <kimockb@gmail.com>2024-05-03 21:17:57 -0400
committerBen Kimock <kimockb@gmail.com>2024-05-21 20:12:29 -0400
commit95150d72465db491f4b04b73545e106462bd003b (patch)
tree99ebc1f9f9f08d0ff0065ac0a05fd60bbfb74eb2 /compiler/rustc_codegen_ssa/src
parent39e02f1bd1e53d009da382654139f7c0639172a8 (diff)
downloadrust-95150d72465db491f4b04b73545e106462bd003b.tar.gz
rust-95150d72465db491f4b04b73545e106462bd003b.zip
Add a footer in FileEncoder and check for it in MemDecoder
Diffstat (limited to 'compiler/rustc_codegen_ssa/src')
-rw-r--r--compiler/rustc_codegen_ssa/src/lib.rs5
1 files changed, 4 insertions, 1 deletions
diff --git a/compiler/rustc_codegen_ssa/src/lib.rs b/compiler/rustc_codegen_ssa/src/lib.rs
index 4eb24d71009..9bf8fde55fc 100644
--- a/compiler/rustc_codegen_ssa/src/lib.rs
+++ b/compiler/rustc_codegen_ssa/src/lib.rs
@@ -195,6 +195,7 @@ pub enum CodegenErrors {
     EmptyVersionNumber,
     EncodingVersionMismatch { version_array: String, rlink_version: u32 },
     RustcVersionMismatch { rustc_version: String },
+    CorruptFile,
 }
 
 pub fn provide(providers: &mut Providers) {
@@ -265,7 +266,9 @@ impl CodegenResults {
             });
         }
 
-        let mut decoder = MemDecoder::new(&data[4..], 0);
+        let Some(mut decoder) = MemDecoder::new(&data[4..], 0) else {
+            return Err(CodegenErrors::CorruptFile);
+        };
         let rustc_version = decoder.read_str();
         if rustc_version != sess.cfg_version {
             return Err(CodegenErrors::RustcVersionMismatch {