From 89f4d08b6c5cef4eeb322300657be1175076840b Mon Sep 17 00:00:00 2001 From: jpekkila Date: Tue, 28 Jan 2020 18:43:03 +0200 Subject: [PATCH] Fixed a possible out-of-bounds access in error checking when NUM_*_PARAMS is 0 --- src/core/kernels/kernels.cu | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src/core/kernels/kernels.cu b/src/core/kernels/kernels.cu index 2a65640..b24a186 100644 --- a/src/core/kernels/kernels.cu +++ b/src/core/kernels/kernels.cu @@ -101,6 +101,10 @@ acDeviceLoadScalarUniform(const Device device, const Stream stream, const AcReal const AcReal value) { cudaSetDevice(device->id); + if (param < 0 || param >= NUM_REAL_PARAMS) { + fprintf(stderr, "WARNING: invalid AcRealParam %d\n", param); + } + if (!is_valid(value)) { fprintf(stderr, "WARNING: Passed an invalid value %g to device constant %s. Skipping.\n", (double)value, realparam_names[param]); @@ -121,6 +125,10 @@ acDeviceLoadVectorUniform(const Device device, const Stream stream, const AcReal const AcReal3 value) { cudaSetDevice(device->id); + if (param < 0 || param >= NUM_REAL3_PARAMS) { + fprintf(stderr, "WARNING: invalid AcReal3Param %d\n", param); + } + if (!is_valid(value)) { fprintf(stderr, "WARNING: Passed an invalid value (%g, %g, %g) to device constant %s. Skipping.\n", @@ -142,6 +150,10 @@ acDeviceLoadIntUniform(const Device device, const Stream stream, const AcIntPara const int value) { cudaSetDevice(device->id); + if (param < 0 || param >= NUM_INT_PARAMS) { + fprintf(stderr, "WARNING: invalid AcIntParam %d\n", param); + } + if (!is_valid(value)) { fprintf(stderr, "WARNING: Passed an invalid value %d to device constant %s. Skipping.\n", value, intparam_names[param]); @@ -162,6 +174,10 @@ acDeviceLoadInt3Uniform(const Device device, const Stream stream, const AcInt3Pa const int3 value) { cudaSetDevice(device->id); + if (param < 0 || param >= NUM_INT3_PARAMS) { + fprintf(stderr, "WARNING: invalid AcInt3Param %d\n", param); + } + if (!is_valid(value.x) || !is_valid(value.y) || !is_valid(value.z)) { fprintf( stderr,