From: Daniel.Thibault@drdc-rddc.gc.ca (Thibault, Daniel)
Subject: [lttng-dev] [PATCH] lttng-tools add_context.c : Fixing memory leaks
Date: Mon, 30 Jan 2012 16:58:22 -0500 [thread overview]
Message-ID: <3CA1A65C03C1A34C81BBC6272782E696808A01@valcartierex01.valcartier.drdc-rddc.gc.ca> (raw)
In-Reply-To: <4F27091A.80606@polymtl.ca>
> For some reason, this patch does not apply ...
Okay, my git repository is now properly connected, and below is the patch rewritten for the current commit. Besides enforcing the return values and outputting --help to stdout, the problem lay with the instances of struct ctx_type *type being created but not assigned to the doubly-linked list under various error conditions.
------------------------------
From e8e3c1db9311fda3b01a9318e263ce55b476222f Mon, 30 Jan 2012 16:55:02 -0500
From: Daniel U. Thibault <daniel.thibault@drdc-rddc.gc.ca>
Date: Mon, 30 Jan 2012 16:54:47 -0500
Subject: [PATCH] lttng-tools add_context : Fixing memory leaks
Signed-off-by: Daniel U. Thibault <daniel.thibault at drdc-rddc.gc.ca>
diff --git a/src/bin/lttng/commands/add_context.c b/src/bin/lttng/commands/add_context.c
index 2f3bce1..2fec520 100644
--- a/src/bin/lttng/commands/add_context.c
+++ b/src/bin/lttng/commands/add_context.c
@@ -313,14 +313,14 @@
fprintf(ofp, "Options:\n");
fprintf(ofp, " -h, --help Show this help\n");
fprintf(ofp, " --list-options Simple listing of options\n");
- fprintf(ofp, " -s, --session NAME Apply on session name\n");
- fprintf(ofp, " -c, --channel NAME Apply on channel\n");
- fprintf(ofp, " -e, --event NAME Apply on event\n");
+ fprintf(ofp, " -s, --session NAME Apply to session name\n");
+ fprintf(ofp, " -c, --channel NAME Apply to channel\n");
+ fprintf(ofp, " -e, --event NAME Apply to event\n");
fprintf(ofp, " -k, --kernel Apply to the kernel tracer\n");
#if 0
fprintf(ofp, " -u, --userspace [CMD] Apply to the user-space tracer\n");
fprintf(ofp, " If no CMD, the domain used is UST global\n");
- fprintf(ofp, " or else the domain is UST EXEC_NAME\n");
+ fprintf(ofp, " otherwise the domain is UST EXEC_NAME\n");
fprintf(ofp, " -p, --pid PID If -u, apply to specific PID (domain: UST PID)\n");
#else
fprintf(ofp, " -u, --userspace Apply to the user-space tracer\n");
@@ -385,7 +385,7 @@
goto error;
}
- /* Iterate over all context type given */
+ /* Iterate over all the context types given */
cds_list_for_each_entry(type, &ctx_type_list.head, list) {
context.ctx = type->opt->ctx_type;
if (context.ctx == LTTNG_EVENT_CONTEXT_PERF_COUNTER) {
@@ -444,7 +444,7 @@
}
/*
- * Add context on channel or event.
+ * Add context to channel or event.
*/
int cmd_add_context(int argc, const char **argv)
{
@@ -455,6 +455,7 @@
if (argc < 2) {
usage(stderr);
+ ret = CMD_ERROR;
goto end;
}
@@ -464,17 +465,10 @@
while ((opt = poptGetNextOpt(pc)) != -1) {
switch (opt) {
case OPT_HELP:
- usage(stderr);
+ usage(stdout);
ret = CMD_SUCCESS;
goto end;
case OPT_TYPE:
- type = malloc(sizeof(struct ctx_type));
- if (type == NULL) {
- perror("malloc ctx_type");
- ret = -1;
- goto end;
- }
-
/*
* Look up the index of opt_type in ctx_opts[] first, so we don't
* have to free(type) on failure.
@@ -482,11 +476,21 @@
index = find_ctx_type_idx(opt_type);
if (index < 0) {
ERR("Unknown context type %s", opt_type);
+ ret = CMD_ERROR;
+ goto end;
+ }
+ type = malloc(sizeof(struct ctx_type));
+ if (type == NULL) {
+ perror("malloc ctx_type");
+ ret = CMD_FATAL;
goto end;
}
type->opt = &ctx_opts[index];
if (type->opt->ctx_type == -1) {
ERR("Unknown context type %s", opt_type);
+ free(type);
+ ret = CMD_ERROR;
+ goto end;
} else {
cds_list_add(&type->list, &ctx_type_list.head);
}
@@ -511,7 +515,7 @@
if (!opt_session_name) {
session_name = get_session_name();
if (session_name == NULL) {
- ret = -1;
+ ret = CMD_ERROR;
goto end;
}
} else {
@@ -520,11 +524,11 @@
ret = add_context(session_name);
+end:
/* Cleanup allocated memory */
cds_list_for_each_entry_safe(type, tmptype, &ctx_type_list.head, list) {
free(type);
}
-end:
return ret;
}
------------------------------
Daniel U. Thibault
R & D pour la d?fense Canada - Valcartier (RDDC Valcartier) / Defence R&D Canada - Valcartier (DRDC Valcartier)
Syst?me de syst?mes (SdS) / System of Systems (SoS)
Solutions informatiques et exp?rimentations (SIE) / Computing Solutions and Experimentations (CSE)
2459 Boul. Pie XI Nord
Qu?bec, QC? G3J 1X5
CANADA
Vox : (418) 844-4000 x4245
Fax : (418) 844-4538
NAC: 918V QSDJ
Gouvernement du Canada?/ Government of Canada
<http://www.valcartier.drdc-rddc.gc.ca/>
next prev parent reply other threads:[~2012-01-30 21:58 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <mailman.1.1327683602.12686.lttng-dev@lists.lttng.org>
2012-01-27 18:41 ` [lttng-dev] [PATCH] lttng-tools lib/lttng-ctl/lttng-ctl.c : Document return values and more Thibault, Daniel
2012-01-27 19:46 ` David Goulet
2012-01-27 20:49 ` [lttng-dev] [PATCH] [RESUBMISSION] " Thibault, Daniel
2012-01-30 18:11 ` David Goulet
2012-01-30 18:52 ` Thibault, Daniel
2012-01-30 20:27 ` Alexandre Montplaisir
2012-01-30 21:12 ` [lttng-dev] git: vs http: Thibault, Daniel
2012-01-30 20:27 ` [lttng-dev] [PATCH] lttng-tools Catching up on miscellaneous string and comment fixes (from 5c73c59) Thibault, Daniel
2012-01-30 21:02 ` David Goulet
2012-01-30 20:31 ` [lttng-dev] [PATCH] lttng-tools add_context.c : Fixing memory leaks Thibault, Daniel
2012-01-30 21:18 ` David Goulet
2012-01-30 21:39 ` Thibault, Daniel
2012-01-30 21:44 ` David Goulet
2012-01-30 21:58 ` Thibault, Daniel [this message]
2012-01-30 22:05 ` David Goulet
2012-01-30 20:58 ` [lttng-dev] [PATCH] lttng-tools lttng-ctl, calibrate and create : Document return values Thibault, Daniel
2012-01-30 21:04 ` [lttng-dev] [PATCH] lttng-tools : create.c : Simplify create_session() Thibault, Daniel
2012-01-30 21:26 ` [lttng-dev] [PATCH] Rewrites lttng-ctl's set_session_daemon_path(), fix snprintf() return value tests so the code works with both GNU C < 2.1 and >= 2.1 Thibault, Daniel
2012-01-30 21:35 ` David Goulet
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=3CA1A65C03C1A34C81BBC6272782E696808A01@valcartierex01.valcartier.drdc-rddc.gc.ca \
--to=daniel.thibault@drdc-rddc.gc.ca \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox