[ltrace] Check -n argument for validity, fix memory errors, fix over-indentation
Petr Machata
pmachata at fedoraproject.org
Thu May 3 18:25:28 UTC 2012
commit e06544fab7c58a3cda7d8a3c1efb8144a4a7b932
Author: Petr Machata <pmachata at redhat.com>
Date: Thu May 3 20:25:12 2012 +0200
Check -n argument for validity, fix memory errors, fix over-indentation
ltrace-0.6.0-dash-n.patch | 26 ++++++++++++++++++++++++++
ltrace-0.6.0-libs-fixes-1.patch | 39 +++++++++++++++++++++++++++++++++++++++
ltrace.spec | 13 ++++++++++++-
3 files changed, 77 insertions(+), 1 deletions(-)
---
diff --git a/ltrace-0.6.0-dash-n.patch b/ltrace-0.6.0-dash-n.patch
new file mode 100644
index 0000000..d411434
--- /dev/null
+++ b/ltrace-0.6.0-dash-n.patch
@@ -0,0 +1,26 @@
+diff --git a/options.c b/options.c
+index d5edc1a..8dce7f8 100644
+--- a/options.c
++++ b/options.c
+@@ -494,9 +494,19 @@ process_options(int argc, char **argv)
+ case 'L':
+ options.libcalls = 0;
+ break;
+- case 'n':
+- options.indent = atoi(optarg);
++ case 'n': {
++ char *endptr;
++ long int l = strtol(optarg, &endptr, 0);
++ /* Arbitrary cut-off. Nobody needs to indent
++ * more than, say, 8, anyway. */
++ if (l < 0 || l > 20 || *optarg == 0 || *endptr != 0) {
++ fprintf(stderr, "Invalid argument to -n: '%s'."
++ " Use integer 0..20.\n", optarg);
++ exit(1);
++ }
++ options.indent = (int)l;
+ break;
++ }
+ case 'o':
+ options.output = fopen(optarg, "w");
+ if (!options.output) {
diff --git a/ltrace-0.6.0-libs-fixes-1.patch b/ltrace-0.6.0-libs-fixes-1.patch
new file mode 100644
index 0000000..f10c339
--- /dev/null
+++ b/ltrace-0.6.0-libs-fixes-1.patch
@@ -0,0 +1,39 @@
+diff --git a/output.c b/output.c
+index ac8c9d0..db6e93e 100644
+--- a/output.c
++++ b/output.c
+@@ -22,9 +22,10 @@ static int current_depth = 0;
+ static int current_column = 0;
+
+ static void
+-output_indent(Process *proc) {
+- current_column +=
+- fprintf(options.output, "%*s", options.indent * proc->callstack_depth, "");
++output_indent(struct Process *proc)
++{
++ int d = options.indent * (proc->callstack_depth - 1);
++ current_column += fprintf(options.output, "%*s", d, "");
+ }
+
+ static void
+diff --git a/proc.c b/proc.c
+index 51833fe..54afbe0 100644
+--- a/proc.c
++++ b/proc.c
+@@ -49,6 +49,7 @@ arch_dynlink_done(struct Process *proc)
+ #endif
+
+ static void add_process(struct Process *proc, int was_exec);
++static void unlist_process(struct Process *proc);
+
+ static int
+ process_bare_init(struct Process *proc, const char *filename,
+@@ -96,7 +97,7 @@ process_bare_destroy(struct Process *proc, int was_exec)
+ dict_clear(proc->breakpoints);
+ if (!was_exec) {
+ free(proc->filename);
+- remove_process(proc);
++ unlist_process(proc);
+ }
+ }
+
diff --git a/ltrace.spec b/ltrace.spec
index ef83315..67fd381 100644
--- a/ltrace.spec
+++ b/ltrace.spec
@@ -1,7 +1,7 @@
Summary: Tracks runtime library calls from dynamically linked executables
Name: ltrace
Version: 0.6.0
-Release: 12%{?dist}
+Release: 13%{?dist}
URL: http://ltrace.alioth.debian.org/
License: GPLv2+
Group: Development/Debuggers
@@ -31,6 +31,8 @@ Patch15: ltrace-0.6.0-detach-sleeping.patch
Patch16: ltrace-0.6.0-tail-return.patch
Patch17: ltrace-0.6.0-ppc-lwarx.patch
Patch18: ltrace-0.6.0-libs.patch
+Patch19: ltrace-0.6.0-libs-fixes-1.patch
+Patch20: ltrace-0.6.0-dash-n.patch
%description
Ltrace is a debugging program which runs a specified command until the
@@ -60,6 +62,8 @@ execution of processes.
%patch16 -p1
%patch17 -p1
%patch18 -p1
+%patch19 -p1
+%patch20 -p1
sed -i -e 's/-o root -g root//' Makefile.in
%build
@@ -88,6 +92,13 @@ echo ====================TESTING END=====================
%config(noreplace) %{_sysconfdir}/ltrace.conf
%changelog
+* Thu May 3 2012 Petr Machata <pmachata at redhat.com> - 0.6.0-13
+- Check -n argument for validity (ltrace-0.6.0-dash-n.patch)
+- Resolves: #818529
+- ltrace-0.6.0-libs-fixes-1.patch
+ - Fix double free when process initialization fails for some reason
+ - Don't indent first level of calls
+
* Mon Apr 30 2012 Petr Machata <pmachata at redhat.com> - 0.6.0-12
- Fix 32-bit builds
More information about the scm-commits
mailing list