Skip to content

Commit d57e4a5

Browse files
committed
Fix out of bound access in mipmap generation job
1 parent 86b301a commit d57e4a5

File tree

1 file changed

+11
-11
lines changed

1 file changed

+11
-11
lines changed

Runtime/ImageImporter.cs

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
using System;
1+
using System;
22
using System.Runtime.InteropServices;
33
using System.Threading.Tasks;
44
using Unity.Burst;
@@ -291,10 +291,10 @@ public void Execute(int index) {
291291
var outputY = index / outputWidth;
292292
var outputColor = new uint3();
293293

294-
for (int offsetX = 0; offsetX < 2; offsetX++) {
295-
for (int offsetY = 0; offsetY < 2; offsetY++) {
296-
var inputX = min(mad(2, outputX, offsetX), inputWidth);
297-
var inputY = min(mad(2, outputY, offsetY), inputHeight);
294+
for (var offsetX = 0; offsetX < 2; offsetX++) {
295+
for (var offsetY = 0; offsetY < 2; offsetY++) {
296+
var inputX = min(mad(2, outputX, offsetX), inputWidth - 1);
297+
var inputY = min(mad(2, outputY, offsetY), inputHeight - 1);
298298
var inputIndex = mad(inputWidth, inputY, inputX);
299299
outputColor.x += (uint)inputMipmap[mad(3, inputIndex, 0)] >> 2;
300300
outputColor.y += (uint)inputMipmap[mad(3, inputIndex, 1)] >> 2;
@@ -317,19 +317,19 @@ struct FilterMipmapRGBA32Job : IJobParallelFor {
317317

318318
public int outputWidth;
319319
public int outputHeight;
320-
[WriteOnly, NativeDisableParallelForRestriction]
320+
[WriteOnly]
321321
public NativeSlice<uint> outputMipmap;
322322

323323
public void Execute(int index) {
324324
var outputX = index % outputWidth;
325325
var outputY = index / outputWidth;
326326
var outputColor = new uint4();
327327

328-
for (int offsetX = 0; offsetX < 2; offsetX++) {
329-
for (int offsetY = 0; offsetY < 2; offsetY++) {
330-
var inputX = min(outputX * 2 + offsetX, inputWidth);
331-
var inputY = min(outputY * 2 + offsetY, inputHeight);
332-
var inputColor = inputMipmap[inputY * inputWidth + inputX];
328+
for (var offsetX = 0; offsetX < 2; offsetX++) {
329+
for (var offsetY = 0; offsetY < 2; offsetY++) {
330+
var inputX = min(mad(2, outputX, offsetX), inputWidth - 1);
331+
var inputY = min(mad(2, outputY, offsetY), inputHeight - 1);
332+
var inputColor = inputMipmap[mad(inputWidth, inputY, inputX)];
333333
outputColor.x += (inputColor & 0x000000FFu) >> 2;
334334
outputColor.y += (inputColor & 0x0000FF00u) >> 10;
335335
outputColor.z += (inputColor & 0x00FF0000u) >> 18;

0 commit comments

Comments
 (0)