aboutsummaryrefslogtreecommitdiffstats
path: root/scd
diff options
context:
space:
mode:
Diffstat (limited to 'scd')
-rw-r--r--scd/ChangeLog6
-rw-r--r--scd/command.c1
-rw-r--r--scd/scdaemon.c6
3 files changed, 12 insertions, 1 deletions
diff --git a/scd/ChangeLog b/scd/ChangeLog
index d1ab1c643..9a545d87f 100644
--- a/scd/ChangeLog
+++ b/scd/ChangeLog
@@ -1,3 +1,9 @@
+2009-10-25 Werner Koch <[email protected]>
+
+ * scdaemon.c (scd_deinit_default_ctrl): Release IN_DATA.
+ * command.c (cmd_setdata): Release IN_DATA. Reported by Klaus
+ Flittner.
+
2009-10-16 Marcus Brinkmann <[email protected]>
* AM_CFLAGS, scdaemon_LDADD: Use libassuan instead of libassuan-pth.
diff --git a/scd/command.c b/scd/command.c
index 09c0b8e45..b70455eec 100644
--- a/scd/command.c
+++ b/scd/command.c
@@ -804,6 +804,7 @@ cmd_setdata (assuan_context_t ctx, char *line)
if (!buf)
return out_of_core ();
+ xfree (ctrl->in_data.value);
ctrl->in_data.value = buf;
ctrl->in_data.valuelen = n;
for (p=line, n=0; n < ctrl->in_data.valuelen; p += 2, n++)
diff --git a/scd/scdaemon.c b/scd/scdaemon.c
index f483d2098..5823c9948 100644
--- a/scd/scdaemon.c
+++ b/scd/scdaemon.c
@@ -895,7 +895,11 @@ scd_init_default_ctrl (ctrl_t ctrl)
static void
scd_deinit_default_ctrl (ctrl_t ctrl)
{
- (void)ctrl;
+ if (!ctrl)
+ return;
+ xfree (ctrl->in_data.value);
+ ctrl->in_data.value = NULL;
+ ctrl->in_data.valuelen = 0;
}