Browse Source

Fix OOB in lighting.cpp

pull/417/head
Gleb Mazovetskiy 6 years ago committed by Anders Jenbo
parent
commit
a4a302c4ed
  1. 12
      Source/lighting.cpp
  2. 2
      Source/lighting.h

12
Source/lighting.cpp

@ -9,7 +9,7 @@ BOOL dovision;
int numvision;
char lightmax;
BOOL dolighting;
BYTE lightblock[8][8][16][16];
BYTE lightblock[64][16][16];
int visionid;
BYTE *pLightTbl;
BOOL lightflag;
@ -556,7 +556,7 @@ void DoLighting(int nXPos, int nYPos, int nRadius, int Lnum)
mult = xoff + 8 * yoff;
for (y = 0; y < min_y; y++) {
for (x = 1; x < max_x; x++) {
radius_block = lightblock[0][mult][y][x];
radius_block = lightblock[mult][y][x];
if (radius_block < 128) {
temp_x = nXPos + x;
temp_y = nYPos + y;
@ -573,7 +573,7 @@ void DoLighting(int nXPos, int nYPos, int nRadius, int Lnum)
mult = xoff + 8 * yoff;
for (y = 0; y < max_y; y++) {
for (x = 1; x < max_x; x++) {
radius_block = lightblock[0][mult][y + block_y][x + block_x];
radius_block = lightblock[mult][y + block_y][x + block_x];
if (radius_block < 128) {
temp_x = nXPos + y;
temp_y = nYPos - x;
@ -590,7 +590,7 @@ void DoLighting(int nXPos, int nYPos, int nRadius, int Lnum)
mult = xoff + 8 * yoff;
for (y = 0; y < max_y; y++) {
for (x = 1; x < min_x; x++) {
radius_block = lightblock[0][mult][y + block_y][x + block_x];
radius_block = lightblock[mult][y + block_y][x + block_x];
if (radius_block < 128) {
temp_x = nXPos - x;
temp_y = nYPos - y;
@ -607,7 +607,7 @@ void DoLighting(int nXPos, int nYPos, int nRadius, int Lnum)
mult = xoff + 8 * yoff;
for (y = 0; y < min_y; y++) {
for (x = 1; x < min_x; x++) {
radius_block = lightblock[0][mult][y + block_y][x + block_x];
radius_block = lightblock[mult][y + block_y][x + block_x];
if (radius_block < 128) {
temp_x = nXPos - y;
temp_y = nYPos + x;
@ -958,7 +958,7 @@ void MakeLightTable()
} else {
fa = 0.5;
}
lightblock[i][j][k][l] = fs + fa;
lightblock[i * 8 + j][k][l] = fs + fa;
}
}
}

2
Source/lighting.h

@ -11,7 +11,7 @@ extern BOOL dovision;
extern int numvision;
extern char lightmax;
extern BOOL dolighting;
extern BYTE lightblock[8][8][16][16];
extern BYTE lightblock[64][16][16];
extern int visionid;
extern BYTE *pLightTbl;
extern BOOL lightflag;

Loading…
Cancel
Save