From: Peter van Dijk Date: Fri, 17 Mar 2023 10:23:43 +0000 (+0100) Subject: be explicit about sizeof(T) X-Git-Tag: auth-4.8.0-alpha1~1^2~16 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=57b21130c36e1d6f5cf0052045de72e5c2557d13;p=thirdparty%2Fpdns.git be explicit about sizeof(T) --- diff --git a/ext/lmdb-safe/lmdb-safe.hh b/ext/lmdb-safe/lmdb-safe.hh index 1213f05cc0..45feac1915 100644 --- a/ext/lmdb-safe/lmdb-safe.hh +++ b/ext/lmdb-safe/lmdb-safe.hh @@ -177,6 +177,8 @@ struct MDBOutVal size_t offset = LMDBLS::LScheckHeaderAndGetSize(this, sizeof(T)); memcpy(&ret, (char *)d_mdbval.mv_data+offset, sizeof(T)); + + static_assert(sizeof(T) == 4, "this code currently only supports 32 bit integers"); ret = ntohl(ret); return ret; } @@ -191,6 +193,8 @@ struct MDBOutVal throw std::runtime_error("MDB data has wrong length for type"); memcpy(&ret, d_mdbval.mv_data, sizeof(T)); + + static_assert(sizeof(T) == 4, "this code currently only supports 32 bit integers"); ret = ntohl(ret); return ret; } @@ -273,6 +277,7 @@ public: T>::type* = nullptr> MDBInVal(T i) { + static_assert(sizeof(T) == 4, "this code currently only supports 32 bit integers"); auto j = htonl(i); // all actual usage in our codebase is 32 bits. If that ever changes, this will break the build and avoid runtime surprises memcpy(&d_memory[0], &j, sizeof(j));