We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
There was an error while loading. Please reload this page.
2 parents f3f3fd9 + 9a47d65 commit 3bc3ae3Copy full SHA for 3bc3ae3
src/librustc/metadata/cstore.rs
@@ -238,13 +238,17 @@ impl MetadataBlob {
238
MetadataArchive(ref ar) => ar.as_slice(),
239
};
240
if slice.len() < 4 {
241
- &[]
+ &[] // corrupt metadata
242
} else {
243
- let len = ((slice[0] as u32) << 24) |
244
- ((slice[1] as u32) << 16) |
245
- ((slice[2] as u32) << 8) |
246
- ((slice[3] as u32) << 0);
247
- 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() {
248
+ slice.slice(4, len + 4)
249
+ } else {
250
+ &[] // corrupt or old metadata
251
+ }
252
}
253
254
0 commit comments