All of lore.kernel.org
 help / color / mirror / Atom feed
From: Benjamin ROBIN <dev@benjarobin.fr>
To: <y.karadz@gmail.com>
Cc: <linux-trace-devel@vger.kernel.org>, Benjamin ROBIN <dev@benjarobin.fr>
Subject: [PATCH 20/34] kernelshark: Fix potential memory leaks in libkshark-configio
Date: Sun, 14 Jan 2024 18:17:09 +0100	[thread overview]
Message-ID: <20240114171723.14092-21-dev@benjarobin.fr> (raw)
In-Reply-To: <20240114171723.14092-1-dev@benjarobin.fr>

Allocate a new kshark_config_doc only if the format is supported.

Signed-off-by: Benjamin ROBIN <dev@benjarobin.fr>
---
 src/libkshark-configio.c | 74 ++++++++++++++++++++++------------------
 1 file changed, 41 insertions(+), 33 deletions(-)

diff --git a/src/libkshark-configio.c b/src/libkshark-configio.c
index 9a1ba60..853e056 100644
--- a/src/libkshark-configio.c
+++ b/src/libkshark-configio.c
@@ -675,23 +675,25 @@ struct kshark_config_doc *
 kshark_export_plugin_file(struct kshark_plugin_list *plugin,
 			  enum kshark_config_formats format)
 {
-	/*  Create a new Configuration document. */
-	struct kshark_config_doc *conf =
-		kshark_config_new("kshark.config.library", format);
-
-	if (!conf)
-		return NULL;
+	struct kshark_config_doc *conf;
 
 	switch (format) {
 	case KS_CONFIG_JSON:
-		kshark_plugin_to_json(plugin, conf->conf_doc);
-		return conf;
+		break;
 
 	default:
 		fprintf(stderr, "Document format %d not supported\n",
-			conf->format);
+			format);
 		return NULL;
 	}
+
+	/*  Create a new Configuration document. */
+	conf = kshark_config_new("kshark.config.library", format);
+	if (!conf)
+		return NULL;
+
+	kshark_plugin_to_json(plugin, conf->conf_doc);
+	return conf;
 }
 
 static bool kshark_all_plugins_to_json(struct kshark_context *kshark_ctx,
@@ -739,22 +741,24 @@ struct kshark_config_doc *
 kshark_export_all_plugins(struct kshark_context *kshark_ctx,
 			  enum kshark_config_formats format)
 {
-	struct kshark_config_doc *conf =
-		kshark_config_new("kshark.config.plugins", KS_CONFIG_JSON);
-
-	if (!conf)
-		return NULL;
+	struct kshark_config_doc *conf;
 
 	switch (format) {
 	case KS_CONFIG_JSON:
-		kshark_all_plugins_to_json(kshark_ctx, conf->conf_doc);
-		return conf;
+		break;
 
 	default:
 		fprintf(stderr, "Document format %d not supported\n",
-			conf->format);
+			format);
 		return NULL;
 	}
+
+	conf = kshark_config_new("kshark.config.plugins", format);
+	if (!conf)
+		return NULL;
+
+	kshark_all_plugins_to_json(kshark_ctx, conf->conf_doc);
+	return conf;
 }
 
 static bool kshark_plugin_from_json(struct kshark_context *kshark_ctx,
@@ -867,22 +871,24 @@ struct kshark_config_doc *
 kshark_export_stream_plugins(struct kshark_data_stream *stream,
 			     enum kshark_config_formats format)
 {
-	struct kshark_config_doc *conf =
-		kshark_config_new("kshark.config.plugins", KS_CONFIG_JSON);
-
-	if (!conf)
-		return NULL;
+	struct kshark_config_doc *conf;
 
 	switch (format) {
 	case KS_CONFIG_JSON:
-		kshark_stream_plugins_to_json(stream, conf->conf_doc);
-		return conf;
+		break;
 
 	default:
 		fprintf(stderr, "Document format %d not supported\n",
-			conf->format);
+			format);
 		return NULL;
 	}
+
+	conf = kshark_config_new("kshark.config.plugins", KS_CONFIG_JSON);
+	if (!conf)
+		return NULL;
+
+	kshark_stream_plugins_to_json(stream, conf->conf_doc);
+	return conf;
 }
 
 static bool kshark_stream_plugins_from_json(struct kshark_context *kshark_ctx,
@@ -1019,23 +1025,25 @@ struct kshark_config_doc *
 kshark_export_model(struct kshark_trace_histo *histo,
 		    enum kshark_config_formats format)
 {
-	/*  Create a new Configuration document. */
-	struct kshark_config_doc *conf =
-		kshark_config_new("kshark.config.model", format);
-
-	if (!conf)
-		return NULL;
+	struct kshark_config_doc *conf;
 
 	switch (format) {
 	case KS_CONFIG_JSON:
-		kshark_model_to_json(histo, conf->conf_doc);
-		return conf;
+		break;
 
 	default:
 		fprintf(stderr, "Document format %d not supported\n",
 			format);
 		return NULL;
 	}
+
+	/*  Create a new Configuration document. */
+	conf = kshark_config_new("kshark.config.model", format);
+	if (!conf)
+		return NULL;
+
+	kshark_model_to_json(histo, conf->conf_doc);
+	return conf;
 }
 
 static bool kshark_model_from_json(struct kshark_trace_histo *histo,
-- 
2.43.0


  parent reply	other threads:[~2024-01-14 17:17 UTC|newest]

Thread overview: 55+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-01-14 17:16 [PATCH 00/34] Fix kernelshark issues introduced by the migration to Qt6 Benjamin ROBIN
2024-01-14 17:16 ` [PATCH 01/34] kernelshark: Fix modelReset() signaling, rename update to updateGeom Benjamin ROBIN
2024-01-14 17:16 ` [PATCH 02/34] kernelshark: Add .gitignore Benjamin ROBIN
2024-01-14 17:16 ` [PATCH 03/34] kernelshark: Remove function param when not used, whenever possible Benjamin ROBIN
2024-01-14 17:16 ` [PATCH 04/34] kernelshark: Do not create a temporary container for looping over QMap Benjamin ROBIN
2024-01-21 17:16   ` Yordan Karadzhov
2024-01-28 21:30     ` Benjamin ROBIN
2024-02-04 18:34       ` Yordan Karadzhov
2024-02-04 18:59         ` Benjamin ROBIN
2024-01-14 17:16 ` [PATCH 05/34] kernelshark: Prevent potential detach of QMap container Benjamin ROBIN
2024-01-21 17:17   ` Yordan Karadzhov
2024-01-28 19:38     ` [PATCH v2 " Benjamin ROBIN
2024-01-14 17:16 ` [PATCH 06/34] kernelshark: Fix used after free of QByteArray raw data Benjamin ROBIN
2024-01-14 17:16 ` [PATCH 07/34] kernelshark: Fix potential memory leak in KsGLWidget Benjamin ROBIN
2024-01-14 17:16 ` [PATCH 08/34] kernelshark: Use lambda parameter instead of captured local variable Benjamin ROBIN
2024-01-14 17:16 ` [PATCH 09/34] kernelshark: Keep overridden method protected instead of public Benjamin ROBIN
2024-01-14 17:16 ` [PATCH 10/34] kernelshark: Use sliced() or first() instead of mid/right/left() Benjamin ROBIN
2024-01-14 17:17 ` [PATCH 11/34] kernelshark: Prevent potential divide by zero in Shape::center() Benjamin ROBIN
2024-01-21 19:49   ` Yordan Karadzhov
2024-01-28 19:26     ` [PATCH v2 " Benjamin ROBIN
2024-01-14 17:17 ` [PATCH 12/34] kernelshark: Fix potential access to uninitialized variable Benjamin ROBIN
2024-01-14 17:17 ` [PATCH 13/34] kernelshark: Remove unused locals variables Benjamin ROBIN
2024-01-14 17:17 ` [PATCH 14/34] kernelshark: Fix range-loop-reference Clazy warning Benjamin ROBIN
2024-01-14 17:17 ` [PATCH 15/34] kernelshark: Fix moving a temp object prevents copy elision warning Benjamin ROBIN
2024-01-14 17:17 ` [PATCH 16/34] kernelshark: Add receiver object to connect() call Benjamin ROBIN
2024-01-14 17:17 ` [PATCH 17/34] kernelshark: Return by reference the list of header in KsModels Benjamin ROBIN
2024-01-14 17:17 ` [PATCH 18/34] kernelshark: Fix detaching-temporary Clazy warning Benjamin ROBIN
2024-01-14 17:17 ` [PATCH 19/34] kernelshark: Fix qfileinfo-exists " Benjamin ROBIN
2024-01-14 17:17 ` Benjamin ROBIN [this message]
2024-01-21 18:41   ` [PATCH 20/34] kernelshark: Fix potential memory leaks in libkshark-configio Yordan Karadzhov
2024-01-28 19:25     ` [PATCH v2 " Benjamin ROBIN
2024-01-14 17:17 ` [PATCH 21/34] kernelshark: Fix potential access to uninitialized variable Benjamin ROBIN
2024-01-14 17:17 ` [PATCH 22/34] kernelshark: Fix potential double free of histo->map, histo->bin_count Benjamin ROBIN
2024-01-14 17:17 ` [PATCH 23/34] kernelshark: Fix 'const' type qualifier on return type has no effect Benjamin ROBIN
2024-01-14 17:17 ` [PATCH 24/34] kernelshark: Fix potential memory leaks in libkshark-tepdata Benjamin ROBIN
2024-01-21 18:50   ` Yordan Karadzhov
2024-01-28 19:24     ` [PATCH v2 " Benjamin ROBIN
2024-01-14 17:17 ` [PATCH 25/34] kernelshark: Fix typo in comment of KsGLWidget::resizeGL() Benjamin ROBIN
2024-01-14 17:17 ` [PATCH 26/34] kernelshark: Remove unused KsDataWidget::wipPtr() and broken function Benjamin ROBIN
2024-01-14 17:17 ` [PATCH 27/34] kernelshark: In KsTimeOffsetDialog() constructor use parent param Benjamin ROBIN
2024-01-14 17:17 ` [PATCH 28/34] kernelshark: Fixed loop counter incremented suspiciously twice Benjamin ROBIN
2024-01-14 17:17 ` [PATCH 29/34] kernelshark: Fix tepdata_dump_entry() for event_id = KS_EVENT_OVERFLOW Benjamin ROBIN
2024-01-14 17:17 ` [PATCH 30/34] kernelshark: Use static_cast instead of C cast in KsMainWindow Benjamin ROBIN
2024-01-14 17:17 ` [PATCH 31/34] kernelshark: Fix comparison of integers of different signs warnings Benjamin ROBIN
2024-01-21 19:09   ` Yordan Karadzhov
2024-01-14 17:17 ` [PATCH 32/34] kernelshark: Fix KsTableView columns width, and KsTraceViewer size Benjamin ROBIN
2024-01-14 17:17 ` [PATCH 33/34] kernelshark: Allow to reduce a bit more the graph height Benjamin ROBIN
2024-01-21 19:37   ` Yordan Karadzhov
2024-01-28 18:59     ` [PATCH v2 " Benjamin ROBIN
2024-01-14 17:17 ` [PATCH 34/34] kernelshark: Cleanup of KsDualMarker methods Benjamin ROBIN
2024-01-21 17:08 ` [PATCH 00/34] Fix kernelshark issues introduced by the migration to Qt6 Yordan Karadzhov
2024-03-03  9:56   ` Benjamin ROBIN
2024-03-03 15:47     ` Yordan Karadzhov
2024-03-03 17:07       ` Sudip Mukherjee
2024-03-03 20:43         ` Sudip Mukherjee

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20240114171723.14092-21-dev@benjarobin.fr \
    --to=dev@benjarobin.fr \
    --cc=linux-trace-devel@vger.kernel.org \
    --cc=y.karadz@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.