We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
1 parent ffc1118 commit 9a47d65Copy full SHA for 9a47d65
src/librustc/metadata/cstore.rs
@@ -236,13 +236,17 @@ impl MetadataBlob {
236
MetadataArchive(ref ar) => ar.as_slice(),
237
};
238
if slice.len() < 4 {
239
- &[]
+ &[] // corrupt metadata
240
} else {
241
- let len = ((slice[0] as u32) << 24) |
242
- ((slice[1] as u32) << 16) |
243
- ((slice[2] as u32) << 8) |
244
- ((slice[3] as u32) << 0);
245
- slice.slice(4, len as uint + 4)
+ let len = (((slice[0] as u32) << 24) |
+ ((slice[1] as u32) << 16) |
+ ((slice[2] as u32) << 8) |
+ ((slice[3] as u32) << 0)) as uint;
+ if len + 4 <= slice.len() {
246
+ slice.slice(4, len + 4)
247
+ } else {
248
+ &[] // corrupt or old metadata
249
+ }
250
}
251
252
0 commit comments