diff options
| author | Sai Praveen Bangaru <31557731+saipraveenb25@users.noreply.github.com> | 2024-04-24 19:50:50 -0400 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-04-24 16:50:50 -0700 |
| commit | 941961e5dad5afa51095450b8d57380c322900c0 (patch) | |
| tree | 73afc9da8919c907e657c0e14864d5bcd7c605c9 /prelude | |
| parent | d3ed08ec3073c3cb9ac24fa3670784dd6e97a164 (diff) | |
Prevent pointer validation for zero-size arrays (#4021)
Diffstat (limited to 'prelude')
| -rw-r--r-- | prelude/slang-torch-prelude.h | 7 |
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; } |
