Type in clim-listener: (crash 715) – connection gets crashed.
Analysis:
xrender extension calls directly write-image-z from the render-add-glyph without verifying whenever the request exceeds the max-request-length (put-image verifies, if the buffer may be rendered), what leads to the crash. Server can't be restarted. write-image-z is called inly from put-image and write-image-z.
Possible solutions:
validate the request length in render-add-glyph and signal an error if it's too large (simple, but not general enough).
embed validation in macro with-buffer-request – it has a benefit that new extensions (or "wild" calls to write-image-z and all other rendering functions will be validated, however I'm not sure yet how to do that – macrology there is strong).
How to reproduce (type in a repl to avoid problems with symbols):
Type in clim-listener:
(crash 715)
– connection gets crashed.Analysis:
xrender extension calls directly
write-image-z
from therender-add-glyph
without verifying whenever the request exceeds themax-request-length
(put-image verifies, if the buffer may be rendered), what leads to the crash. Server can't be restarted.write-image-z
is called inly fromput-image
andwrite-image-z
.Possible solutions:
render-add-glyph
and signal an error if it's too large (simple, but not general enough).with-buffer-request
– it has a benefit that new extensions (or "wild" calls towrite-image-z
and all other rendering functions will be validated, however I'm not sure yet how to do that – macrology there is strong).