Mesa (master): clover: add dynamic_cast results checking down in clSetKernelArgument() code path.

Francisco Jerez currojerez at kemper.freedesktop.org
Sun Mar 24 01:49:31 UTC 2013


Module: Mesa
Branch: master
Commit: 3cc2629b3b4bfc3b5c21a5932a3a2e590e60f98a
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=3cc2629b3b4bfc3b5c21a5932a3a2e590e60f98a

Author: Dmitry Cherkassov <dcherkassov at gmail.com>
Date:   Sat Mar 23 23:51:22 2013 +0400

clover: add dynamic_cast results checking down in clSetKernelArgument() code path.

Signed-off-by: Dmitry Cherkassov <dcherkassov at gmail.com>
Signed-off-by: Francisco Jerez <currojerez at riseup.net>

---

 src/gallium/state_trackers/clover/core/kernel.cpp |   12 ++++++++++++
 1 files changed, 12 insertions(+), 0 deletions(-)

diff --git a/src/gallium/state_trackers/clover/core/kernel.cpp b/src/gallium/state_trackers/clover/core/kernel.cpp
index 6fa8bd6..20dc4ca 100644
--- a/src/gallium/state_trackers/clover/core/kernel.cpp
+++ b/src/gallium/state_trackers/clover/core/kernel.cpp
@@ -222,6 +222,9 @@ _cl_kernel::global_argument::set(size_t size, const void *value) {
       throw error(CL_INVALID_ARG_SIZE);
 
    obj = dynamic_cast<clover::buffer *>(*(cl_mem *)value);
+   if (!obj)
+      throw error(CL_INVALID_MEM_OBJECT);
+
    __set = true;
 }
 
@@ -286,6 +289,9 @@ _cl_kernel::constant_argument::set(size_t size, const void *value) {
       throw error(CL_INVALID_ARG_SIZE);
 
    obj = dynamic_cast<clover::buffer *>(*(cl_mem *)value);
+   if (!obj)
+      throw error(CL_INVALID_MEM_OBJECT);
+
    __set = true;
 }
 
@@ -316,6 +322,9 @@ _cl_kernel::image_rd_argument::set(size_t size, const void *value) {
       throw error(CL_INVALID_ARG_SIZE);
 
    obj = dynamic_cast<clover::image *>(*(cl_mem *)value);
+   if (!obj)
+      throw error(CL_INVALID_MEM_OBJECT);
+
    __set = true;
 }
 
@@ -346,6 +355,9 @@ _cl_kernel::image_wr_argument::set(size_t size, const void *value) {
       throw error(CL_INVALID_ARG_SIZE);
 
    obj = dynamic_cast<clover::image *>(*(cl_mem *)value);
+   if (!obj)
+      throw error(CL_INVALID_MEM_OBJECT);
+
    __set = true;
 }
 




More information about the mesa-commit mailing list