From 94861cd73c400ac95b6af951db8050f9dce81c04 Mon Sep 17 00:00:00 2001 From: Littleboy Date: Wed, 11 Jun 2014 23:22:08 -0400 Subject: LASTEXPRESS: Check for resulting sequence size in August logic code. CID 1003264 --- engines/lastexpress/entities/august.cpp | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/engines/lastexpress/entities/august.cpp b/engines/lastexpress/entities/august.cpp index a63a104ae4..14dcf200f0 100644 --- a/engines/lastexpress/entities/august.cpp +++ b/engines/lastexpress/entities/august.cpp @@ -452,11 +452,17 @@ IMPLEMENT_FUNCTION_I(20, August, function20, bool) } if (params->param1) { - strcpy((char *)¶meters->seq2, Common::String::format("%s%s", (char *)¶meters->seq1, "Gc").c_str()); + Common::String sequence = Common::String::format("%s%s", (char *)¶meters->seq1, "Gc"); + assert(sequence.size() <= 13); + + strcpy((char *)¶meters->seq2, sequence.c_str()); getObjects()->update(kObjectCompartment3, kEntityPlayer, kObjectLocation1, kCursorKeepValue, kCursorKeepValue); } else { - strcpy((char *)¶meters->seq2, Common::String::format("%s%s", (char *)¶meters->seq1, "Ec").c_str()); + Common::String sequence = Common::String::format("%s%s", (char *)¶meters->seq1, "Ec"); + assert(sequence.size() <= 13); + + strcpy((char *)¶meters->seq2, sequence.c_str()); } setCallback(1); @@ -484,15 +490,22 @@ IMPLEMENT_FUNCTION_I(20, August, function20, bool) setCallback(2); setup_playSound("AUG2094"); } + } break; case 2: - case 3: + case 3: { getSavePoints()->push(kEntityAugust, kEntityMertens, kAction269436673); - strcpy((char *)¶meters->seq2, Common::String::format("%s%s", (char *)¶meters->seq1, "Qc").c_str()); + + Common::String sequence = Common::String::format("%s%s", (char *)¶meters->seq1, "Qc"); + assert(sequence.size() <= 13); + + strcpy((char *)¶meters->seq2, sequence.c_str()); getEntities()->drawSequenceLeft(kEntityAugust, (char *)¶meters->seq2); + + } break; } break; -- cgit v1.2.3