Skip to content

Commit ba9a78b

Browse files
committed
[GEN][ZH] Prevent buffer overrun while writing to 'new_types', 'new_lensflares' in DazzleRenderObjClass
1 parent 6026f2c commit ba9a78b

File tree

2 files changed

+8
-4
lines changed
  • Generals/Code/Libraries/Source/WWVegas/WW3D2
  • GeneralsMD/Code/Libraries/Source/WWVegas/WW3D2

2 files changed

+8
-4
lines changed

Generals/Code/Libraries/Source/WWVegas/WW3D2/dazzle.cpp

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -669,7 +669,8 @@ void DazzleRenderObjClass::Init_Type(const DazzleInitClass& i)
669669
unsigned new_count=i.type+1;
670670
DazzleTypeClass** new_types=W3DNEWARRAY DazzleTypeClass*[new_count];
671671
unsigned a=0;
672-
for (;a<type_count;++a) {
672+
unsigned copy_count = min(type_count, new_count);
673+
for (;a<copy_count;++a) {
673674
new_types[a]=types[a];
674675
}
675676
for (;a<new_count;++a) {
@@ -693,7 +694,8 @@ void DazzleRenderObjClass::Init_Lensflare(const LensflareInitClass& i)
693694
unsigned new_count=i.type+1;
694695
LensflareTypeClass** new_lensflares=W3DNEWARRAY LensflareTypeClass*[new_count];
695696
unsigned a=0;
696-
for (;a<lensflare_count;++a) {
697+
unsigned copy_count = min(lensflare_count, new_count);
698+
for (;a<copy_count;++a) {
697699
new_lensflares[a]=lensflares[a];
698700
}
699701
for (;a<new_count;++a) {

GeneralsMD/Code/Libraries/Source/WWVegas/WW3D2/dazzle.cpp

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -685,7 +685,8 @@ void DazzleRenderObjClass::Init_Type(const DazzleInitClass& i)
685685
unsigned new_count=i.type+1;
686686
DazzleTypeClass** new_types=W3DNEWARRAY DazzleTypeClass*[new_count];
687687
unsigned a=0;
688-
for (;a<type_count;++a) {
688+
unsigned copy_count = min(type_count, new_count);
689+
for (;a<copy_count;++a) {
689690
new_types[a]=types[a];
690691
}
691692
for (;a<new_count;++a) {
@@ -709,7 +710,8 @@ void DazzleRenderObjClass::Init_Lensflare(const LensflareInitClass& i)
709710
unsigned new_count=i.type+1;
710711
LensflareTypeClass** new_lensflares=W3DNEWARRAY LensflareTypeClass*[new_count];
711712
unsigned a=0;
712-
for (;a<lensflare_count;++a) {
713+
unsigned copy_count = min(lensflare_count, new_count);
714+
for (;a<copy_count;++a) {
713715
new_lensflares[a]=lensflares[a];
714716
}
715717
for (;a<new_count;++a) {

0 commit comments

Comments
 (0)