sway/include
Tobias Stoeckmann edcdb5552d common: handle invalid IPC messages
The size of IPC data is stored in an unsigned 32 bit data type within
the IPC message header. In order to terminate the received data with a
nul byte, one additional byte is allocated.

It is not checked if the transmitted size is 2^32 - 1. Adding one more
byte would overflow and lead to 0 byte allocation.

On 64 bit systems, the recv call with 2^32 - 1 does not fail instantly
but reads data from the server into unallocated memory.

Prevent override of unallocated memory by aborting communication.

Proof of Concept Python server (use 64 bit address sanitized client):
```
import os
import socket

os.remove('/tmp/sway-poc.socket')
server = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
server.bind('/tmp/sway-poc.socket')
server.listen(1)
print('waiting for client')
(client, address) = server.accept()
client.send(b'\x69\x33\x2D\x69\x70\x63\xFF\xFF\xFF\xFF\x00\x00\x00\x00\xFF\xFF\xFF\xFF\xFF')
input('sent reply, press enter')
client.close()
```
2021-05-07 21:10:03 +02:00
..
sway Remove support for arbitrary rotations 2021-04-26 10:36:25 +02:00
swaybar Fix swaybar tray for non-systemd 2020-12-16 21:19:20 +01:00
swaynag swaynag: add details background option 2020-09-14 22:13:01 -04:00
background-image.h Initial swaylock port 2018-04-04 18:47:48 -04:00
cairo.h swaybg: split into standalone project 2019-04-25 18:44:28 +03:00
ipc-client.h common: handle invalid IPC messages 2021-05-07 21:10:03 +02:00
ipc.h i3-compat: add GET_BINDING_STATE IPC command 2020-06-14 00:55:14 -04:00
list.h list.c: rename free_flat_list to list_free_items_and_destroy 2018-12-09 01:15:38 +00:00
log.h Use -fmacro-prefix-map to strip build path 2019-07-15 16:35:50 -04:00
loop.h Remove timerfd from loop implementation 2018-10-15 00:26:27 +10:00
meson.build Address review comments 2018-03-28 14:43:23 -04:00
pango.h Fix pango escaping and refactor escape_markup_text 2018-09-22 18:33:28 +10:00
pool-buffer.h client/pool-buffer: munmap in destroy_buffer 2018-05-27 14:09:48 +01:00
stringop.h common: make 'lenient_strcmp' arguments const 2020-12-04 10:49:49 +01:00
util.h moved and renamed movement-unit parsing to common 2020-07-21 10:07:01 +02:00