From 0c6d558c50b7df916a9d10f24664b336a92b39cf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beat=20K=C3=BCng?= Date: Fri, 21 Feb 2020 13:56:48 +0100 Subject: [PATCH] bmp388: fix double free in case the driver probing fails 'interface' is freed in BMP388's destructor. --- src/drivers/barometer/bmp388/bmp388_main.cpp | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/drivers/barometer/bmp388/bmp388_main.cpp b/src/drivers/barometer/bmp388/bmp388_main.cpp index 83e5b6fd1c..624cae897a 100644 --- a/src/drivers/barometer/bmp388/bmp388_main.cpp +++ b/src/drivers/barometer/bmp388/bmp388_main.cpp @@ -103,10 +103,15 @@ static bool start_bus(bmp388_bus_option &bus) BMP388 *dev = new BMP388(interface); - if (dev == nullptr || (dev->init() != PX4_OK)) { + if (dev == nullptr) { + PX4_ERR("alloc failed"); + delete interface; + return false; + } + + if (dev->init() != PX4_OK) { PX4_ERR("driver start failed"); delete dev; - delete interface; return false; }