authorgravatar for camconn@users.noreply.github.comCameron Conn <camconn@users.noreply.github.com> 2021-02-01 14:27:39-06:00
committergravatar for noreply@github.comGitHub <noreply@github.com> 2021-02-01 15:27:39-05:00
log683d3f72427b39bea5827a0a1c1fc4c74dbe246e
tree55bcfefa2dab7c05d2301c243a5b262709688092
parent446ebddb937ccc8bea7060b74268e90702656fde
signature Signed by PGP key 4AEE18F83AFDEB23

Don't read more bytes than exist in MsfStream (#7839)


1 files changed, 2 insertions(+), 0 deletions(-)

lib/std/pdb.zig+2
...@@ -662,6 +662,7 @@ const MsfStream = struct {...@@ -662,6 +662,7 @@ const MsfStream = struct {
662662
663 fn read(self: *MsfStream, buffer: []u8) !usize {663 fn read(self: *MsfStream, buffer: []u8) !usize {
664 var block_id = @intCast(usize, self.pos / self.block_size);664 var block_id = @intCast(usize, self.pos / self.block_size);
665 if (block_id >= self.blocks.len) return 0; // End of Stream
665 var block = self.blocks[block_id];666 var block = self.blocks[block_id];
666 var offset = self.pos % self.block_size;667 var offset = self.pos % self.block_size;
667668
...@@ -680,6 +681,7 @@ const MsfStream = struct {...@@ -680,6 +681,7 @@ const MsfStream = struct {
680 if (offset == self.block_size) {681 if (offset == self.block_size) {
681 offset = 0;682 offset = 0;
682 block_id += 1;683 block_id += 1;
684 if (block_id >= self.blocks.len) break; // End of Stream
683 block = self.blocks[block_id];685 block = self.blocks[block_id];
684 try self.in_file.seekTo(block * self.block_size);686 try self.in_file.seekTo(block * self.block_size);
685 }687 }