commit 50b401677be27103e7c4a67ca455d286f562ff7c
parent f414885b1d1f09b92619dcedc4ec2d20b257a9aa
Author: Ryan Dwyer <ryandwyer1@gmail.com>
Date: Wed, 4 Jul 2018 22:58:17 +1000
Fix use after free in transaction code
If we set an instruction as ready twice, it decreases the transaction's
num_waiting a second time and applies the transaction earlier than it
should. This no doubt has undesired effects, probably resulting in a use
after free.
Hopefully fixes the first part of #2207.
Diffstat:
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/sway/desktop/transaction.c b/sway/desktop/transaction.c
@@ -377,7 +377,9 @@ static void set_instructions_ready(struct sway_view *view, int index) {
for (int i = 0; i <= index; ++i) {
struct sway_transaction_instruction *instruction =
view->swayc->instructions->items[i];
- set_instruction_ready(instruction);
+ if (!instruction->ready) {
+ set_instruction_ready(instruction);
+ }
}
}