Skip to content

Commit d195ca7

Browse files
committed
wayland/screencopy: fix UAF in dmabuf modifier collection
The QList optimization the code was for no longer exists.
1 parent ca79715 commit d195ca7

File tree

1 file changed

+0
-12
lines changed

1 file changed

+0
-12
lines changed

src/wayland/buffer/dmabuf.cpp

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -167,7 +167,6 @@ void LinuxDmabufFeedback::zwp_linux_dmabuf_feedback_v1_tranche_formats(wl_array*
167167
auto indexTableLength = indices->size / sizeof(uint16_t);
168168

169169
uint32_t lastFormat = 0;
170-
LinuxDmabufModifiers* lastModifiers = nullptr;
171170
LinuxDmabufModifiers* modifiers = nullptr;
172171

173172
for (uint16_t ti = 0; ti != indexTableLength; ++ti) {
@@ -176,14 +175,7 @@ void LinuxDmabufFeedback::zwp_linux_dmabuf_feedback_v1_tranche_formats(wl_array*
176175

177176
// Compositors usually send a single format's modifiers as a block.
178177
if (!modifiers || entry.format != lastFormat) {
179-
// We can often share modifier lists between formats
180-
if (lastModifiers && modifiers->modifiers == lastModifiers->modifiers) {
181-
// avoids storing a second list
182-
modifiers->modifiers = lastModifiers->modifiers;
183-
}
184-
185178
lastFormat = entry.format;
186-
lastModifiers = modifiers;
187179

188180
auto modifiersIter = std::ranges::find_if(tranche.formats.formats, [&](const auto& pair) {
189181
return pair.first == entry.format;
@@ -203,10 +195,6 @@ void LinuxDmabufFeedback::zwp_linux_dmabuf_feedback_v1_tranche_formats(wl_array*
203195
modifiers->modifiers.push(entry.modifier);
204196
}
205197
}
206-
207-
if (lastModifiers && modifiers && modifiers->modifiers == lastModifiers->modifiers) {
208-
modifiers->modifiers = lastModifiers->modifiers;
209-
}
210198
}
211199

212200
void LinuxDmabufFeedback::zwp_linux_dmabuf_feedback_v1_tranche_done() {

0 commit comments

Comments
 (0)