@@ -86,17 +86,47 @@ Result<BufferCleanup> prepare_input_tensors(
8686 Debug, " Verifying and setting input for non-tensor input %zu" , i);
8787
8888 if (tag.get () == Tag::Int) {
89- int64_t int_input;
90- std::memcpy (&int_input, buffer, buffer_size);
91- err = method.set_input (runtime::EValue (int_input), i);
89+ if (buffer_size != sizeof (int64_t )) {
90+ ET_LOG (
91+ Error,
92+ " Int input at index %zu has size %zu, expected sizeof(int64_t) %zu" ,
93+ i,
94+ buffer_size,
95+ sizeof (int64_t ));
96+ err = Error::InvalidArgument;
97+ } else {
98+ int64_t int_input;
99+ std::memcpy (&int_input, buffer, buffer_size);
100+ err = method.set_input (runtime::EValue (int_input), i);
101+ }
92102 } else if (tag.get () == Tag::Double) {
93- double double_input;
94- std::memcpy (&double_input, buffer, buffer_size);
95- err = method.set_input (runtime::EValue (double_input), i);
103+ if (buffer_size != sizeof (double )) {
104+ ET_LOG (
105+ Error,
106+ " Double input at index %zu has size %zu, expected sizeof(double) %zu" ,
107+ i,
108+ buffer_size,
109+ sizeof (double ));
110+ err = Error::InvalidArgument;
111+ } else {
112+ double double_input;
113+ std::memcpy (&double_input, buffer, buffer_size);
114+ err = method.set_input (runtime::EValue (double_input), i);
115+ }
96116 } else if (tag.get () == Tag::Bool) {
97117 bool bool_input;
98- std::memcpy (&bool_input, buffer, buffer_size);
99- err = method.set_input (runtime::EValue (bool_input), i);
118+ if (buffer_size != sizeof (bool )) {
119+ ET_LOG (
120+ Error,
121+ " Bool input at index %zu has size %zu, expected sizeof(bool) %zu" ,
122+ i,
123+ buffer_size,
124+ sizeof (bool ));
125+ err = Error::InvalidArgument;
126+ } else {
127+ std::memcpy (&bool_input, buffer, buffer_size);
128+ err = method.set_input (runtime::EValue (bool_input), i);
129+ }
100130 } else {
101131 ET_LOG (
102132 Error,
0 commit comments