-void close_user_tables(void)
-{
- for_each_admissible_user(close_user_table, NULL);
+ if (!ui_used(ui))
+ continue;
+ if (!ui->table)
+ continue;
+ DEBUG_LOG("closing user table for uid %u\n", (unsigned)ui->uid);
+ ret = osl(osl_close_table(ui->table, OSL_MARK_CLEAN));
+ if (ret < 0)
+ ERROR_LOG("failed to close user table %u: %s\n",
+ (unsigned)ui->uid, adu_strerror(-ret));
+ free((char *)ui->desc->name);
+ ui->desc->name = NULL;
+ free((char *)ui->desc->dir);
+ ui->desc->dir = NULL;
+ free(ui->pw_name);
+ ui->pw_name = NULL;
+ free(ui->desc);
+ ui->desc = NULL;
+ ui->table = NULL;
+ ui->flags = 0;
+ }
+ free(uid_hash_table);
+ uid_hash_table = NULL;