From 85116eed410ff792a5ae61b81c8df42bdbf62903 Mon Sep 17 00:00:00 2001 From: Arnaud Giersch Date: Wed, 16 Feb 2022 19:20:54 +0100 Subject: [PATCH] Add basic check for failures in deserialization. --- src/mc/api/Transition.cpp | 3 ++- src/mc/api/TransitionComm.cpp | 14 +++++++------- 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/src/mc/api/Transition.cpp b/src/mc/api/Transition.cpp index 5e63923ade..0da429d823 100644 --- a/src/mc/api/Transition.cpp +++ b/src/mc/api/Transition.cpp @@ -49,8 +49,9 @@ std::string RandomTransition::to_string(bool verbose) const RandomTransition::RandomTransition(aid_t issuer, int times_considered, std::stringstream& stream) : Transition(Type::RANDOM, issuer, times_considered) { - stream >> min_ >> max_; + xbt_assert(stream >> min_ >> max_); } + std::string RandomTransition::dot_label() const { return Transition::dot_label() + to_c_str(type_); diff --git a/src/mc/api/TransitionComm.cpp b/src/mc/api/TransitionComm.cpp index df11271417..616599674e 100644 --- a/src/mc/api/TransitionComm.cpp +++ b/src/mc/api/TransitionComm.cpp @@ -23,7 +23,7 @@ namespace mc { CommWaitTransition::CommWaitTransition(aid_t issuer, int times_considered, std::stringstream& stream) : Transition(Type::COMM_WAIT, issuer, times_considered) { - stream >> timeout_ >> comm_ >> sender_ >> receiver_ >> mbox_ >> src_buff_ >> dst_buff_ >> size_; + xbt_assert(stream >> timeout_ >> comm_ >> sender_ >> receiver_ >> mbox_ >> src_buff_ >> dst_buff_ >> size_); XBT_DEBUG("CommWaitTransition %s comm:%p, sender:%ld receiver:%ld mbox:%u sbuff:%p rbuff:%p size:%zu", (timeout_ ? "timeout" : "no-timeout"), comm_, sender_, receiver_, mbox_, src_buff_, dst_buff_, size_); } @@ -62,7 +62,7 @@ bool CommWaitTransition::depends(const Transition* other) const CommTestTransition::CommTestTransition(aid_t issuer, int times_considered, std::stringstream& stream) : Transition(Type::COMM_TEST, issuer, times_considered) { - stream >> comm_ >> sender_ >> receiver_ >> mbox_ >> src_buff_ >> dst_buff_ >> size_; + xbt_assert(stream >> comm_ >> sender_ >> receiver_ >> mbox_ >> src_buff_ >> dst_buff_ >> size_); XBT_DEBUG("CommTestTransition comm:%p, sender:%ld receiver:%ld mbox:%u sbuff:%p rbuff:%p size:%zu", comm_, sender_, receiver_, mbox_, src_buff_, dst_buff_, size_); } @@ -101,7 +101,7 @@ bool CommTestTransition::depends(const Transition* other) const CommRecvTransition::CommRecvTransition(aid_t issuer, int times_considered, std::stringstream& stream) : Transition(Type::COMM_RECV, issuer, times_considered) { - stream >> mbox_ >> dst_buff_; + xbt_assert(stream >> mbox_ >> dst_buff_); } std::string CommRecvTransition::to_string(bool verbose) const { @@ -150,7 +150,7 @@ bool CommRecvTransition::depends(const Transition* other) const CommSendTransition::CommSendTransition(aid_t issuer, int times_considered, std::stringstream& stream) : Transition(Type::COMM_SEND, issuer, times_considered) { - stream >> mbox_ >> src_buff_ >> size_; + xbt_assert(stream >> mbox_ >> src_buff_ >> size_); XBT_DEBUG("SendTransition mbox:%u buff:%p size:%zu", mbox_, src_buff_, size_); } std::string CommSendTransition::to_string(bool verbose = false) const @@ -165,7 +165,7 @@ TestAnyTransition::TestAnyTransition(aid_t issuer, int times_considered, std::st : Transition(Type::TESTANY, issuer, times_considered) { int size; - stream >> size; + xbt_assert(stream >> size); for (int i = 0; i < size; i++) { Transition* t = deserialize_transition(issuer, 0, stream); XBT_DEBUG("TestAny received a transition %s", t->to_string(true).c_str()); @@ -188,7 +188,7 @@ WaitAnyTransition::WaitAnyTransition(aid_t issuer, int times_considered, std::st : Transition(Type::WAITANY, issuer, times_considered) { int size; - stream >> size; + xbt_assert(stream >> size); for (int i = 0; i < size; i++) { Transition* t = deserialize_transition(issuer, 0, stream); transitions_.push_back(t); @@ -246,7 +246,7 @@ bool CommSendTransition::depends(const Transition* other) const Transition* deserialize_transition(aid_t issuer, int times_considered, std::stringstream& stream) { short type; - stream >> type; + xbt_assert(stream >> type); xbt_assert(type >= 0 && type <= static_cast(Transition::Type::UNKNOWN), "Invalid transition type %d received", type); -- 2.30.2