summaryrefslogtreecommitdiffabout
path: root/src
authorSergey Poznyakoff <gray@gnu.org>2016-02-21 13:40:59 (GMT)
committer Sergey Poznyakoff <gray@gnu.org>2016-02-21 13:40:59 (GMT)
commit722533c595a0976e50cca45dca7f28ff7e599970 (patch) (side-by-side diff)
tree6534bb0f16d74e75237497f3838034ffe7c84509 /src
parent599a468169078449b68e7c0ef711c14fb746f0ea (diff)
downloadpies-722533c595a0976e50cca45dca7f28ff7e599970.tar.gz
pies-722533c595a0976e50cca45dca7f28ff7e599970.tar.bz2
Fix memory leaks when reconfiguring
* grecs: Upgrade. * src/acl.c (_acl_common_section_parser): Free old value. * src/pies.c: Mark statically initialized keywords with GRECS_CONST.
Diffstat (limited to 'src') (more/less context) (ignore whitespace changes)
-rw-r--r--src/acl.c5
-rw-r--r--src/pies.c16
2 files changed, 12 insertions, 9 deletions
diff --git a/src/acl.c b/src/acl.c
index e7523f5..53e5dd8 100644
--- a/src/acl.c
+++ b/src/acl.c
@@ -532,13 +532,16 @@ _acl_common_section_parser (enum grecs_callback_command cmd,
return 1;
}
acl = pies_acl_create (tag, locus);
if (tag && (acl = pies_acl_install (acl)) == NULL)
return 1;
if (pacl)
- *pacl = acl;
+ {
+ pies_acl_free (*pacl);
+ *pacl = acl;
+ }
break;
case grecs_callback_section_end:
acl = *pacl;
if (acl->list)
acl->list->cmp = acl_entry_cmp;
diff --git a/src/pies.c b/src/pies.c
index d1bcfd8..3d7f593 100644
--- a/src/pies.c
+++ b/src/pies.c
@@ -1291,13 +1291,13 @@ struct grecs_keyword control_keywords[] = {
&control.idle_timeout, 0,
NULL,
},
{"realm",
N_("name"),
N_("Authentication realm name"),
- grecs_type_string, GRECS_DFLT,
+ grecs_type_string, GRECS_CONST,
&control.realm, 0,
NULL,
},
{ NULL }
};
@@ -1375,18 +1375,18 @@ struct grecs_keyword pies_keywords[] = {
N_("Show source info with debugging messages."),
grecs_type_bool, GRECS_DFLT,
&source_info_option, 0, NULL},
{"state-directory",
NULL,
N_("Full file name of the program state directory."),
- grecs_type_string, GRECS_DFLT,
+ grecs_type_string, GRECS_CONST,
&statedir, 0, NULL},
{"pidfile",
NULL,
N_("Write PID to this file."),
- grecs_type_string, GRECS_DFLT,
+ grecs_type_string, GRECS_CONST,
&pidfile, 0,
NULL,
},
{"control-file",
NULL,
N_("Ignored for compatibility with version 1.2."),
@@ -1401,19 +1401,19 @@ struct grecs_keyword pies_keywords[] = {
NULL, 0,
NULL,
},
{"qotd-file",
NULL,
N_("Set location of the QOTD file."),
- grecs_type_string, GRECS_DFLT,
+ grecs_type_string, GRECS_CONST,
&qotdfile, 0,
NULL },
{"user",
NULL,
N_("Run with this user privileges."),
- grecs_type_string, GRECS_DFLT,
+ grecs_type_string, GRECS_CONST,
&pies_privs.user, 0,
NULL,
},
{"group",
NULL,
N_("Retain supplementary group."),
@@ -1485,27 +1485,27 @@ struct grecs_keyword pies_keywords[] = {
NULL, 0,
_cb_include_meta1,
},
{"meta1-queue-dir",
NULL,
N_("Set the name of MeTA1 queue directory (default /var/spool/meta1)."),
- grecs_type_string, GRECS_DFLT,
+ grecs_type_string, GRECS_CONST,
&meta1_queue_dir, 0,
NULL,
},
{"mailer-program",
NULL,
N_("Full path to the mailer binary."),
- grecs_type_string, GRECS_DFLT,
+ grecs_type_string, GRECS_CONST,
&mailer_program, 0,
NULL
},
{"mailer-command-line",
NULL,
N_("Mailer command line (without recipient addresses)."),
- grecs_type_string, GRECS_DFLT,
+ grecs_type_string, GRECS_CONST,
&mailer_command_line, 0,
NULL
},
{ "identity-provider", "name: string", "Configure identity provider",
grecs_type_section, GRECS_INAC | GRECS_HIDDEN },
{NULL}

Return to:

Send suggestions and report system problems to the System administrator.