From 941961e5dad5afa51095450b8d57380c322900c0 Mon Sep 17 00:00:00 2001 From: Sai Praveen Bangaru <31557731+saipraveenb25@users.noreply.github.com> Date: Wed, 24 Apr 2024 19:50:50 -0400 Subject: Prevent pointer validation for zero-size arrays (#4021) --- prelude/slang-torch-prelude.h | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/prelude/slang-torch-prelude.h b/prelude/slang-torch-prelude.h index a2e4a1980..bdba620fe 100644 --- a/prelude/slang-torch-prelude.h +++ b/prelude/slang-torch-prelude.h @@ -136,13 +136,18 @@ TensorView make_tensor_view(torch::Tensor val, const char* name, torch::ScalarTy if (val.dim() > kSlangTorchTensorMaxDim) throw std::runtime_error(std::string(name).append(": number of dimensions exceeds limit (").append(std::to_string(kSlangTorchTensorMaxDim)).append(")").c_str()); + bool isEmpty = true; for (int i = 0; i < val.dim(); ++i) { res.strides[i] = val.stride(i) * elementSize; res.sizes[i] = val.size(i); + if (res.sizes[i] > 0) + isEmpty = false; } - if (!res.data) + + if (!res.data && !isEmpty) throw std::runtime_error(std::string(name).append(": data pointer is invalid.").c_str()); + return res; } -- cgit v1.2.3