mirror of
https://github.com/UberGames/lilium-voyager.git
synced 2024-12-13 13:40:56 +00:00
Fix OOB access in CM_EdgePlaneNum without erroring in CM_GridPlane
I changed warning to error in 9d74227559
,
which broke JA's mp/ctf4 map and probably others.
This commit is contained in:
parent
eeeaf3f125
commit
077ab4cbd1
1 changed files with 19 additions and 1 deletions
|
@ -607,7 +607,7 @@ static int CM_GridPlane( int gridPlanes[MAX_GRID_SIZE][MAX_GRID_SIZE][2], int i,
|
||||||
}
|
}
|
||||||
|
|
||||||
// should never happen
|
// should never happen
|
||||||
Com_Error( ERR_DROP, "CM_GridPlane unresolvable" );
|
Com_Printf( "WARNING: CM_GridPlane unresolvable\n" );
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -626,6 +626,9 @@ static int CM_EdgePlaneNum( cGrid_t *grid, int gridPlanes[MAX_GRID_SIZE][MAX_GRI
|
||||||
p1 = grid->points[i][j];
|
p1 = grid->points[i][j];
|
||||||
p2 = grid->points[i+1][j];
|
p2 = grid->points[i+1][j];
|
||||||
p = CM_GridPlane( gridPlanes, i, j, 0 );
|
p = CM_GridPlane( gridPlanes, i, j, 0 );
|
||||||
|
if ( p == -1 ) {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
VectorMA( p1, 4, planes[ p ].plane, up );
|
VectorMA( p1, 4, planes[ p ].plane, up );
|
||||||
return CM_FindPlane( p1, p2, up );
|
return CM_FindPlane( p1, p2, up );
|
||||||
|
|
||||||
|
@ -633,6 +636,9 @@ static int CM_EdgePlaneNum( cGrid_t *grid, int gridPlanes[MAX_GRID_SIZE][MAX_GRI
|
||||||
p1 = grid->points[i][j+1];
|
p1 = grid->points[i][j+1];
|
||||||
p2 = grid->points[i+1][j+1];
|
p2 = grid->points[i+1][j+1];
|
||||||
p = CM_GridPlane( gridPlanes, i, j, 1 );
|
p = CM_GridPlane( gridPlanes, i, j, 1 );
|
||||||
|
if ( p == -1 ) {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
VectorMA( p1, 4, planes[ p ].plane, up );
|
VectorMA( p1, 4, planes[ p ].plane, up );
|
||||||
return CM_FindPlane( p2, p1, up );
|
return CM_FindPlane( p2, p1, up );
|
||||||
|
|
||||||
|
@ -640,6 +646,9 @@ static int CM_EdgePlaneNum( cGrid_t *grid, int gridPlanes[MAX_GRID_SIZE][MAX_GRI
|
||||||
p1 = grid->points[i][j];
|
p1 = grid->points[i][j];
|
||||||
p2 = grid->points[i][j+1];
|
p2 = grid->points[i][j+1];
|
||||||
p = CM_GridPlane( gridPlanes, i, j, 1 );
|
p = CM_GridPlane( gridPlanes, i, j, 1 );
|
||||||
|
if ( p == -1 ) {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
VectorMA( p1, 4, planes[ p ].plane, up );
|
VectorMA( p1, 4, planes[ p ].plane, up );
|
||||||
return CM_FindPlane( p2, p1, up );
|
return CM_FindPlane( p2, p1, up );
|
||||||
|
|
||||||
|
@ -647,6 +656,9 @@ static int CM_EdgePlaneNum( cGrid_t *grid, int gridPlanes[MAX_GRID_SIZE][MAX_GRI
|
||||||
p1 = grid->points[i+1][j];
|
p1 = grid->points[i+1][j];
|
||||||
p2 = grid->points[i+1][j+1];
|
p2 = grid->points[i+1][j+1];
|
||||||
p = CM_GridPlane( gridPlanes, i, j, 0 );
|
p = CM_GridPlane( gridPlanes, i, j, 0 );
|
||||||
|
if ( p == -1 ) {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
VectorMA( p1, 4, planes[ p ].plane, up );
|
VectorMA( p1, 4, planes[ p ].plane, up );
|
||||||
return CM_FindPlane( p1, p2, up );
|
return CM_FindPlane( p1, p2, up );
|
||||||
|
|
||||||
|
@ -654,6 +666,9 @@ static int CM_EdgePlaneNum( cGrid_t *grid, int gridPlanes[MAX_GRID_SIZE][MAX_GRI
|
||||||
p1 = grid->points[i+1][j+1];
|
p1 = grid->points[i+1][j+1];
|
||||||
p2 = grid->points[i][j];
|
p2 = grid->points[i][j];
|
||||||
p = CM_GridPlane( gridPlanes, i, j, 0 );
|
p = CM_GridPlane( gridPlanes, i, j, 0 );
|
||||||
|
if ( p == -1 ) {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
VectorMA( p1, 4, planes[ p ].plane, up );
|
VectorMA( p1, 4, planes[ p ].plane, up );
|
||||||
return CM_FindPlane( p1, p2, up );
|
return CM_FindPlane( p1, p2, up );
|
||||||
|
|
||||||
|
@ -661,6 +676,9 @@ static int CM_EdgePlaneNum( cGrid_t *grid, int gridPlanes[MAX_GRID_SIZE][MAX_GRI
|
||||||
p1 = grid->points[i][j];
|
p1 = grid->points[i][j];
|
||||||
p2 = grid->points[i+1][j+1];
|
p2 = grid->points[i+1][j+1];
|
||||||
p = CM_GridPlane( gridPlanes, i, j, 1 );
|
p = CM_GridPlane( gridPlanes, i, j, 1 );
|
||||||
|
if ( p == -1 ) {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
VectorMA( p1, 4, planes[ p ].plane, up );
|
VectorMA( p1, 4, planes[ p ].plane, up );
|
||||||
return CM_FindPlane( p1, p2, up );
|
return CM_FindPlane( p1, p2, up );
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue