pipewire/spa/plugins/libcamera
Javier Martinez Canillas 21c412dc49
libcamera: fix a use-after-free due an attempt to stop the camera twice
Camera is currently stopped and started in the spa_libcamera_set_format()
function, but this leads to a segfault due attempting to access a buffers
field of an already freed libcamera::FrameBufferAllocator instance.

The FrameBufferAllocator instance is freed in LibCamera::stop(), that is
called by spa_libcamera_stream_off() as handler of the node commands
SPA_NODE_COMMAND_Pause and SPA_NODE_COMMAND_Suspend.

Since the camera was already stopped, there's no need to attempt to stop
it again. In fact, the camera shouldn't be stopped/started at all in the
spa_libcamera_set_format() function but instead only as an action of the
SPA_NODE_COMMAND_{Pause,Suspend} and SPA_NODE_COMMAND_Start commands.

And same for the stop that's done in the LibCamera::close() function, it
shouldn't be needed because the camera is already stopped before closing.

Fixes #1513
2021-09-21 14:49:08 +02:00
..
libcamera-client.c spa: save the old change_mask and restore when emitting full 2021-05-27 15:21:44 +02:00
libcamera-device.c treewide: replace strcmp() == 0 with spa_streq() 2021-05-18 22:10:27 +10:00
libcamera-source.c spa: save the old change_mask and restore when emitting full 2021-05-27 15:21:44 +02:00
libcamera-utils.c libcamera: fix a use-after-free due an attempt to stop the camera twice 2021-09-21 14:49:08 +02:00
libcamera.c Integrating libcamera 2020-06-04 10:36:39 +02:00
libcamera.h Integrating libcamera 2020-06-04 10:36:39 +02:00
libcamera_wrapper.cpp libcamera: fix a use-after-free due an attempt to stop the camera twice 2021-09-21 14:49:08 +02:00
libcamera_wrapper.h libcamera: add a libcamera_set_config() helper function to the wrapper 2021-09-21 14:49:08 +02:00
meson.build spa: fix the indentation in the various meson.build files 2021-09-20 07:29:03 +00:00