diff options
author | Tomi Valkeinen <tomi.valkeinen@ideasonboard.com> | 2022-08-29 11:44:44 +0300 |
---|---|---|
committer | Laurent Pinchart <laurent.pinchart@ideasonboard.com> | 2022-10-20 02:41:48 +0300 |
commit | 662df4ca26cfe9603a2824d31131324c30c8b6bd (patch) | |
tree | 9c33fad4ebaaea4b4a9434095061670f79b7c811 /include | |
parent | 376adeb7b7e0b75f2fa90b890fe0203d1e268cdf (diff) |
libcamera: base: log: Fix use of freed name
LogCategory just stores the char * that was given to it in the
constructor, i.e. it refers to memory "outside" LogCategory. If the
LogCategory is defined in a .so that is unloaded, then it leads to the
LogCategory pointing to freed memory, causing a crash.
Fix this by taking a copy of the name by using a std::string instead of
just storing the pointer.
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ideasonboard.com>
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Diffstat (limited to 'include')
-rw-r--r-- | include/libcamera/base/log.h | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/include/libcamera/base/log.h b/include/libcamera/base/log.h index 3fc5ced3..8b462767 100644 --- a/include/libcamera/base/log.h +++ b/include/libcamera/base/log.h @@ -31,14 +31,14 @@ class LogCategory public: explicit LogCategory(const char *name); - const char *name() const { return name_; } + const std::string &name() const { return name_; } LogSeverity severity() const { return severity_; } void setSeverity(LogSeverity severity); static const LogCategory &defaultCategory(); private: - const char *name_; + const std::string name_; LogSeverity severity_; }; |