Browse Source

Fixed unaligned memory read in DMI

pull/3051/head
SChernykh 2 years ago
parent
commit
285719cde4
  1. 4
      src/base/tools/Alignment.h
  2. 3
      src/crypto/randomx/jit_compiler_fallback.cpp
  3. 5
      src/hw/dmi/DmiTools.h

4
src/base/tools/Alignment.h

@ -30,7 +30,7 @@ namespace xmrig {
template<typename T>
inline T readUnaligned(const T* ptr)
{
static_assert(std::is_integral<T>::value, "Integer type required");
static_assert(std::is_trivially_copyable<T>::value, "T must be trivially copyable");
T result;
memcpy(&result, ptr, sizeof(T));
@ -41,7 +41,7 @@ inline T readUnaligned(const T* ptr)
template<typename T>
inline void writeUnaligned(T* ptr, T data)
{
static_assert(std::is_integral<T>::value, "Integer type required");
static_assert(std::is_trivially_copyable<T>::value, "T must be trivially copyable");
memcpy(ptr, &data, sizeof(T));
}

3
src/crypto/randomx/jit_compiler_fallback.cpp

@ -28,13 +28,12 @@ OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#pragma once
void randomx_set_huge_pages_jit(bool)
{
}
void randomx_set_optimized_dataset_init(int)
{
}

5
src/hw/dmi/DmiTools.h

@ -24,6 +24,7 @@
#include <cstddef>
#include <cstdint>
#include "base/tools/Alignment.h"
namespace xmrig {
@ -45,10 +46,10 @@ struct u64 {
template<typename T>
inline T dmi_get(const uint8_t *data) { return *reinterpret_cast<const T *>(data); }
inline T dmi_get(const uint8_t *data) { return readUnaligned(reinterpret_cast<const T *>(data)); }
template<typename T>
inline T dmi_get(const dmi_header *h, size_t offset) { return *reinterpret_cast<const T *>(h->data + offset); }
inline T dmi_get(const dmi_header *h, size_t offset) { return readUnaligned(reinterpret_cast<const T *>(h->data + offset)); }
const char *dmi_string(dmi_header *dm, size_t offset);

Loading…
Cancel
Save