summaryrefslogtreecommitdiff
path: root/libpwdgrp/pwd_grp.c
diff options
context:
space:
mode:
Diffstat (limited to 'libpwdgrp/pwd_grp.c')
-rw-r--r--libpwdgrp/pwd_grp.c15
1 files changed, 15 insertions, 0 deletions
diff --git a/libpwdgrp/pwd_grp.c b/libpwdgrp/pwd_grp.c
index 6d938f6..539d2b0 100644
--- a/libpwdgrp/pwd_grp.c
+++ b/libpwdgrp/pwd_grp.c
@@ -117,6 +117,18 @@ static struct statics *ptr_to_statics;
#define S (*ptr_to_statics)
#define has_S (ptr_to_statics)
+#if ENABLE_FEATURE_CLEAN_UP
+static void free_static(void)
+{
+ free(S.db[0].malloced);
+ free(S.db[1].malloced);
+# if ENABLE_USE_BB_SHADOW
+ S.db[2].malloced);
+# endif
+ free(ptr_to_statics);
+}
+#endif
+
static struct statics *get_S(void)
{
if (!ptr_to_statics) {
@@ -126,6 +138,9 @@ static struct statics *get_S(void)
#if ENABLE_USE_BB_SHADOW
memcpy(&S.db[2], &const_sp_db, sizeof(const_sp_db));
#endif
+#if ENABLE_FEATURE_CLEAN_UP
+ atexit(free_static);
+#endif
}
return ptr_to_statics;
}