From 46a7058c7081d2673dbeeecb70dc1e6901c35d9b Mon Sep 17 00:00:00 2001 From: Paul Romano Date: Thu, 25 Oct 2018 17:42:09 -0500 Subject: [PATCH] Fix invalid use of strlen in read_attribute --- include/openmc/hdf5_interface.h | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/include/openmc/hdf5_interface.h b/include/openmc/hdf5_interface.h index 8b80f29d57..313b841e20 100644 --- a/include/openmc/hdf5_interface.h +++ b/include/openmc/hdf5_interface.h @@ -202,7 +202,13 @@ read_attribute(hid_t obj_id, const char* name, std::vector& vec) read_attr_string(obj_id, name, n, buffer[0]); for (int i = 0; i < m; ++i) { - vec.emplace_back(&buffer[i][0], std::min(strlen(buffer[i]), n)); + // Determine proper length of string -- strlen doesn't work because + // buffer[i] might not have any null characters + std::size_t k = 0; + for (; k < n; ++k) if (buffer[i][k] == '\0') break; + + // Create string based on (char*, size_t) constructor + vec.emplace_back(&buffer[i][0], k); } }