Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
SUSE:SLE-12-SP2:GA
MozillaFirefox.11624
mozilla-bmo1436242.patch
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File mozilla-bmo1436242.patch of Package MozillaFirefox.11624
# HG changeset patch # User msirringhaus@suse.de # Date 1560926145 -7200 # Wed Jun 19 08:35:45 2019 +0200 # Node ID 1f6f73d1f75eb81fc98ff51827df2ef52f4904e4 # Parent 8ba5f9a48bebbcd43f159035449544313ab056eb https://bugzilla.redhat.com/show_bug.cgi?id=1577277 https://hg.mozilla.org/mozilla-central/rev/6bb3adfa15c6 https://bugzilla.mozilla.org/show_bug.cgi?id=1436242 diff -r 8ba5f9a48beb -r 1f6f73d1f75e ipc/chromium/src/chrome/common/ipc_channel_posix.cc --- a/ipc/chromium/src/chrome/common/ipc_channel_posix.cc Wed Feb 28 13:57:52 2018 +0100 +++ b/ipc/chromium/src/chrome/common/ipc_channel_posix.cc Wed Jun 19 08:35:45 2019 +0200 @@ -412,10 +412,27 @@ fds = wire_fds; num_fds = num_wire_fds; } else { - const size_t prev_size = input_overflow_fds_.size(); - input_overflow_fds_.resize(prev_size + num_wire_fds); - memcpy(&input_overflow_fds_[prev_size], wire_fds, - num_wire_fds * sizeof(int)); + // This code may look like a no-op in the case where + // num_wire_fds == 0, but in fact: + // + // 1. wire_fds will be nullptr, so passing it to memcpy is + // undefined behavior according to the C standard, even though + // the memcpy length is 0. + // + // 2. prev_size will be an out-of-bounds index for + // input_overflow_fds_; this is undefined behavior according to + // the C++ standard, even though the element only has its + // pointer taken and isn't accessed (and the corresponding + // operation on a C array would be defined). + // + // UBSan makes #1 a fatal error, and assertions in libstdc++ do + // the same for #2 if enabled. + if (num_wire_fds > 0) { + const size_t prev_size = input_overflow_fds_.size(); + input_overflow_fds_.resize(prev_size + num_wire_fds); + memcpy(&input_overflow_fds_[prev_size], wire_fds, + num_wire_fds * sizeof(int)); + } fds = &input_overflow_fds_[0]; num_fds = input_overflow_fds_.size(); }
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor