Fix misaligned read in physical_socket_server
which causes errors under ASAN/UBSAN BUG=None Change-Id: I36bf4ff706339b6e3a8fd3764551e98fce111ad7 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/365249 Reviewed-by: Danil Chapovalov <danilchap@webrtc.org> Reviewed-by: Per Kjellander <perkj@webrtc.org> Reviewed-by: Harald Alvestrand <hta@webrtc.org> Commit-Queue: Philipp Hancke <phancke@meta.com> Cr-Commit-Position: refs/heads/main@{#43243}
This commit is contained in:
parent
2dc95ba299
commit
e486aedc16
@ -10,6 +10,7 @@
|
||||
#include "rtc_base/physical_socket_server.h"
|
||||
|
||||
#include <cstdint>
|
||||
#include <cstring>
|
||||
#include <utility>
|
||||
|
||||
#if defined(_MSC_VER) && _MSC_VER < 1300
|
||||
@ -549,10 +550,11 @@ int PhysicalSocket::DoReadFromSocket(void* buffer,
|
||||
if (cmsg->cmsg_level != SOL_SOCKET)
|
||||
continue;
|
||||
if (timestamp && cmsg->cmsg_type == SCM_TIMESTAMP) {
|
||||
timeval* ts = reinterpret_cast<timeval*>(CMSG_DATA(cmsg));
|
||||
timeval ts;
|
||||
std::memcpy(static_cast<void*>(&ts), CMSG_DATA(cmsg), sizeof(ts));
|
||||
*timestamp =
|
||||
rtc::kNumMicrosecsPerSec * static_cast<int64_t>(ts->tv_sec) +
|
||||
static_cast<int64_t>(ts->tv_usec);
|
||||
rtc::kNumMicrosecsPerSec * static_cast<int64_t>(ts.tv_sec) +
|
||||
static_cast<int64_t>(ts.tv_usec);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user