From 92b750d5efb56359e3c95ca6bc093ab4b6395aa1 Mon Sep 17 00:00:00 2001 From: Steve Reinhardt Date: Sat, 6 Feb 2016 17:21:20 -0800 Subject: [PATCH] syscall_emul: fix bug in aux vector initialization Writing 16 bytes from an 8-byte source value is a bad idea. This doesn't appear to have broken anything, but showed up as spurious differences when tracediffing runs. --- src/arch/x86/process.cc | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/arch/x86/process.cc b/src/arch/x86/process.cc index 8d1e1da96..82a23027d 100644 --- a/src/arch/x86/process.cc +++ b/src/arch/x86/process.cc @@ -983,8 +983,10 @@ X86LiveProcess::argsInit(int pageSize, } //Write out the terminating zeroed auxilliary vector const uint64_t zero = 0; - initVirtMem.writeBlob(auxv_array_base + 2 * intSize * auxv.size(), - (uint8_t*)&zero, 2 * intSize); + initVirtMem.writeBlob(auxv_array_base + auxv.size() * 2 * intSize, + (uint8_t*)&zero, intSize); + initVirtMem.writeBlob(auxv_array_base + (auxv.size() * 2 + 1) * intSize, + (uint8_t*)&zero, intSize); initVirtMem.writeString(aux_data_base, platform.c_str());