summaryrefslogtreecommitdiffstats
path: root/prelude
diff options
context:
space:
mode:
authorSai Praveen Bangaru <31557731+saipraveenb25@users.noreply.github.com>2024-04-24 19:50:50 -0400
committerGitHub <noreply@github.com>2024-04-24 16:50:50 -0700
commit941961e5dad5afa51095450b8d57380c322900c0 (patch)
tree73afc9da8919c907e657c0e14864d5bcd7c605c9 /prelude
parentd3ed08ec3073c3cb9ac24fa3670784dd6e97a164 (diff)
Prevent pointer validation for zero-size arrays (#4021)
Diffstat (limited to 'prelude')
-rw-r--r--prelude/slang-torch-prelude.h7
1 files changed, 6 insertions, 1 deletions
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;
}