audioaggregator: fix input_buffer ownership
authorGuillaume Desmottes <guillaume.desmottes@collabora.com>
Wed, 10 Mar 2021 13:26:22 +0000 (14:26 +0100)
committerGuillaume Desmottes <guillaume.desmottes@collabora.com>
Wed, 10 Mar 2021 15:38:03 +0000 (16:38 +0100)
commitb7c1810aa36d8a35b7e2b554ef0e07de67bc4a4c
tree70b10c845defcabc069587c475cc527737411f06
parent44358f1eaf9aa52155900d618e2653e1cac55d6c
audioaggregator: fix input_buffer ownership

The way pad->priv->input_buffer reference was managed was pretty
spurious:
- it was overridden without unrefing it, which could potentially lead to
  leaks.
- we were unreffing it while keeping the pointer around, which could
  potentially lead to use-after-free or double-free.

As priv->input_buffer is actually no longer used outside of the
aggregate() method, remove it from pad->priv to simplify the code and
prevent the issues desribed above.

Fix a single buffer leak when shutting down the pipeline as the buffer
returned from gst_aggregator_pad_drop_buffer() was never unreffed.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/1061>
gst-libs/gst/audio/gstaudioaggregator.c