summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid Sommerseth <dazo@users.sourceforge.net>2011-01-10 01:19:22 +0100
committerDavid Sommerseth <dazo@users.sourceforge.net>2011-01-10 01:19:22 +0100
commit44bcb3e74a85b4a53a0dc626db13c3d03d925538 (patch)
tree81db9d938ad90ce932aaa6ed7180175cca836ed1
parent35502a5b07eff6a0893989a1ea7edb603087a7c6 (diff)
downloadeurephia-44bcb3e74a85b4a53a0dc626db13c3d03d925538.tar.gz
eurephia-44bcb3e74a85b4a53a0dc626db13c3d03d925538.tar.xz
eurephia-44bcb3e74a85b4a53a0dc626db13c3d03d925538.zip
Fixed several memleaks in the eurephiadm related code paths
Signed-off-by: David Sommerseth <dazo@users.sourceforge.net>
-rw-r--r--database/sqlite/administration/certificates.c1
-rw-r--r--eurephiadm/commands/adminaccess.c18
-rw-r--r--eurephiadm/commands/certificates.c2
-rw-r--r--eurephiadm/commands/usercerts.c1
-rw-r--r--eurephiadm/commands/users.c1
5 files changed, 17 insertions, 6 deletions
diff --git a/database/sqlite/administration/certificates.c b/database/sqlite/administration/certificates.c
index b283624..78be97e 100644
--- a/database/sqlite/administration/certificates.c
+++ b/database/sqlite/administration/certificates.c
@@ -173,6 +173,7 @@ static xmlDoc *certificate_add(eurephiaCTX *ctx, eDBfieldMap *crtinf_map) {
res_d = eurephiaXML_ResultMsg(ctx, exmlRESULT, info_n,
"Certificate registered (certid %ld)", res->last_insert_id);
+ free_nullsafe(ctx, certid);
xmlFreeNode(info_n);
}
sqlite_free_results(res);
diff --git a/eurephiadm/commands/adminaccess.c b/eurephiadm/commands/adminaccess.c
index 4b19c05..cb6078d 100644
--- a/eurephiadm/commands/adminaccess.c
+++ b/eurephiadm/commands/adminaccess.c
@@ -275,11 +275,13 @@ int grant_revoke(eurephiaCTX *ctx, eurephiaSESSION *sess, eurephiaVALUES *cfg, i
case 'i':
if( f_uid > 0 ) {
fprintf(stderr, "%s: User id can only be set once\n", MODULE);
- return 1;
+ rc = 1;
+ goto error;
}
if( atoi_nullsafe(optargs[0]) < 1 ) {
fprintf(stderr, "%s: User ID must be a positive number (>0)\n", MODULE);
- return 1;
+ rc = 1;
+ goto error;
}
f_uid++;
xmlNewChild(fmap_n, NULL, (xmlChar *) "uid", (xmlChar *) optargs[0]);
@@ -288,7 +290,8 @@ int grant_revoke(eurephiaCTX *ctx, eurephiaSESSION *sess, eurephiaVALUES *cfg, i
case 'a':
if( f_acl > 0 ) {
fprintf(stderr, "%s: Access level can only be set once\n", MODULE);
- return 1;
+ rc = 1;
+ goto error;
}
f_acl++;
xmlNewChild(fmap_n, NULL, (xmlChar *) "accesslevel", (xmlChar *) optargs[0]);
@@ -297,7 +300,8 @@ int grant_revoke(eurephiaCTX *ctx, eurephiaSESSION *sess, eurephiaVALUES *cfg, i
case 'I':
if( f_intf > 0 ) {
fprintf(stderr, "%s: Admin interface indicator can only be set once\n", MODULE);
- return 1;
+ rc = 1;
+ goto error;
}
f_intf++;
xmlNewChild(fmap_n, NULL, (xmlChar *) "interface", (xmlChar *) optargs[0]);
@@ -305,10 +309,12 @@ int grant_revoke(eurephiaCTX *ctx, eurephiaSESSION *sess, eurephiaVALUES *cfg, i
case 'h':
display_adminaccess_help(actmode);
- return 0;
+ rc = 0;
+ goto error;
default:
- return 1;
+ rc = 1;
+ goto error;
}
}
diff --git a/eurephiadm/commands/certificates.c b/eurephiadm/commands/certificates.c
index 859da4f..a3b875e 100644
--- a/eurephiadm/commands/certificates.c
+++ b/eurephiadm/commands/certificates.c
@@ -218,6 +218,7 @@ int register_certificate(eurephiaCTX *ctx, int depth, const char *digest,
certid = 0;
}
free_nullsafe(ctx, res);
+ xmlFreeDoc(res_xml);
}
xmlFreeDoc(cert_xml);
free_nullsafe(ctx, cname_cp);
@@ -525,6 +526,7 @@ int delete_cert(eurephiaCTX *ctx, eurephiaSESSION *sess, eurephiaVALUES *cfg, in
rc = 0;
}
free_nullsafe(ctx, res);
+ xmlFreeDoc(res_xml);
}
xmlFreeDoc(delete_xml);
diff --git a/eurephiadm/commands/usercerts.c b/eurephiadm/commands/usercerts.c
index 3ca8be5..553e16e 100644
--- a/eurephiadm/commands/usercerts.c
+++ b/eurephiadm/commands/usercerts.c
@@ -215,6 +215,7 @@ int list_usercerts(eurephiaCTX *ctx, eurephiaSESSION *sess, eurephiaVALUES *cfg,
xslt_print_xmldoc(stdout, cfg, list_xml, "usercerts.xsl", xsltparams);
xmlFreeDoc(list_xml);
+ xmlFreeDoc(srch_xml);
return 0;
}
diff --git a/eurephiadm/commands/users.c b/eurephiadm/commands/users.c
index 7d514ba..033e6d2 100644
--- a/eurephiadm/commands/users.c
+++ b/eurephiadm/commands/users.c
@@ -729,6 +729,7 @@ int account_activation(eurephiaCTX *ctx, eurephiaSESSION *sess, eurephiaVALUES *
rc = rc ? 1 : 0;
}
free_nullsafe(ctx, res);
+ free_nullsafe(ctx, acclvl_res);
xmlFreeDoc(acclvl_res_xml);
xmlFreeDoc(acclvl_d);
}