1
0
Fork 0
mirror of https://codeberg.org/demostf/parser.git synced 2026-10-01 08:44:05 +02:00

remove some bounds checks

This commit is contained in:
Robin Appelman 2025-07-14 14:52:38 +02:00
commit 6ef2b1cea8
9 changed files with 102 additions and 93 deletions

View file

@ -1,6 +1,6 @@
use super::stringtable::read_var_int;
use crate::demo::message::packetentities::PacketEntitiesMessage;
use crate::demo::message::stringtable::{encode_var_int_fixed, log_base2};
use crate::demo::message::stringtable::{encode_var_int_fixed};
use crate::demo::packet::datatable::ClassId;
use crate::demo::parser::{Encode, ParseBitSkip};
use crate::demo::sendprop::SendProp;
@ -53,8 +53,8 @@ impl Parse<'_> for TempEntitiesMessage {
};
let class_id = if stream.read()? {
let bits = log_base2(state.server_classes.len()) + 1;
(stream.read_sized::<u16>(bits as usize)?.saturating_sub(1)).into()
let bits = state.server_class_bits;
(stream.read_sized::<u16>(bits)?.saturating_sub(1)).into()
} else {
let last = events.last().ok_or(ParseError::InvalidDemo(
"temp entity update without previous",
@ -118,9 +118,9 @@ impl Encode for TempEntitiesMessage {
if event.class_id != last_class_id {
true.write(stream)?;
let bits = log_base2(state.server_classes.len()) + 1;
let bits = state.server_class_bits;
let id: u16 = event.class_id.into();
(id + 1).write_sized(stream, bits as usize)?;
(id + 1).write_sized(stream, bits)?;
} else {
false.write(stream)?;
}