Access fragments safely
This commit is contained in:
@@ -69,13 +69,14 @@ bool FragmentAssembly::add_fragment( Instruction &inst )
|
|||||||
fragments.clear();
|
fragments.clear();
|
||||||
current_template = inst;
|
current_template = inst;
|
||||||
fragments.resize( real_fragment_num + 1 );
|
fragments.resize( real_fragment_num + 1 );
|
||||||
fragments[ real_fragment_num ] = inst;
|
fragments.at( real_fragment_num ) = inst;
|
||||||
fragments_arrived = 1;
|
fragments_arrived = 1;
|
||||||
fragments_total = -1;
|
fragments_total = -1;
|
||||||
} else { /* not a new packet */
|
} else { /* not a new packet */
|
||||||
/* see if we already have this fragment */
|
/* see if we already have this fragment */
|
||||||
if ( fragments[ real_fragment_num ].old_num != uint64_t(-1) ) {
|
if ( (fragments.size() > real_fragment_num)
|
||||||
assert( fragments[ real_fragment_num ] == inst );
|
&& (fragments.at( real_fragment_num ).old_num != uint64_t(-1)) ) {
|
||||||
|
assert( fragments.at( real_fragment_num ) == inst );
|
||||||
} else {
|
} else {
|
||||||
if ( fragments_total == -1 ) {
|
if ( fragments_total == -1 ) {
|
||||||
fragments.resize( real_fragment_num + 1 );
|
fragments.resize( real_fragment_num + 1 );
|
||||||
@@ -102,7 +103,7 @@ Instruction FragmentAssembly::get_assembly( void )
|
|||||||
ret.diff = "";
|
ret.diff = "";
|
||||||
|
|
||||||
for ( int i = 0; i < fragments_total; i++ ) {
|
for ( int i = 0; i < fragments_total; i++ ) {
|
||||||
ret.diff += fragments[ i ].diff;
|
ret.diff += fragments.at( i ).diff;
|
||||||
}
|
}
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
|
|||||||
Reference in New Issue
Block a user