	* Add neverallow support for ioctl extended permissions, from Jeff Vander Stoep.
	* Improve CIL block and macro call recursion detection, from Steve Lawrence
	* Fix CIL uninitialized false positive in cil_binary, from Yuli Khodorkovskiy
	* Provide error in CIL if classperms are empty, from Yuli Khodorkovskiy
	* Add userattribute{set} functionality to CIL, from Yuli Khodorkovskiy
	* fix CIL blockinherit copying segfault and add macro restrictions, from Steve Lawrence
	* fix CIL NULL pointer dereference when copying classpermission/set, from Steve Lawrence
	* Add CIL support for ioctl whitelists, from Steve Lawrence
	* Fix memory leak when destroying avtab, from Steve Lawrence
	* Replace sscanf in module_to_cil, from Yuli Khodorkovskiy.
	* Improve CIL resolution error messages, from Steve Lawrence
	* Fix policydb_read for policy versions < 24, from Stephen Smalley.
	* Added CIL bounds checking and refactored CIL Neverallow checking, from James Carter
	* Refactored libsepol Neverallow and bounds (hierarchy) checking, from James Carter
	* Treat types like an attribute in the attr_type_map, from James Carter
	* Add new ebitmap function named ebitmap_match_any(), from James Carter
	* switch operations to extended perms, from Jeff Vander Stoep.
	* Write auditadm_r and secadm_r roles to base module when writing CIL, from Steve Lawrence
	* Fix module to CIL to only associate declared roleattributes with in-scope types, from Steve Lawrence
	* Don't allow categories/sensitivities inside blocks in CIL, from Yuli Khodorkovskiy.
	* Replace fmemopen() with internal function in libsepol, from James Carter.
	* Verify users prior to evaluating users in cil, from Yuli Khodorkovskiy.
	* Binary modules do not support ioctl rules, from Stephen Smalley.
	* Add support for ioctl command whitelisting, from Jeff Vander Stoep.
	* Don't use symbol versioning for static object files, from Yuli Khodorkovskiy.
	* Add sepol_module_policydb_to_cil(), sepol_module_package_to_cil(), and sepol_ppfile_to_module_package(), from James Carter.
	* Move secilc out of libsepol, from Yuli Khodorkovskiy.
	* fix building Xen policy with devicetreecon, and add devicetreecon
	  CIL documentation, from Richard Haines.
	* bool_copy_callback set state on creation, from Thomas Hurd.
	* Add device tree ocontext nodes to Xen policy, from Daniel De Graaf.
	* Widen Xen IOMEM context entries, from Daniel De Graaf.
	* Update CIL documentation, from Richard Haines
	* Fix error path in mls_semantic_level_expand(), from Chris PeBenito.
	* Fix MacOS X build, from Stephen Smalley.
	* Enabling building CIL in Android, from Stephen Smalley.
	* Update to latest CIL, includes new name resolution and fixes ordering
	  issues with blockinherit statements, and bug fixes

2.4 2015-02-02
	* Remove assumption that SHLIBDIR is ../../ relative to LIBDIR, from Steve
	  Lawrence
	* Fix bugs found by hardened gcc flags, from Nicolas Iooss.
	* Build CIL into libsepol. libsepol can be built without CIL by setting the
	  DISABLE_CIL flag to 'y', from Steve Lawrence
	* Add an API function to set target_platform, from Steve Lawrence
	* Report all neverallow violations, from Stephen Smalley
	* Improve check_assertions performance through hash tweaks from John Brooks.
	* Allow libsepol C++ static library on device from Daniel Cashman.

2.3 2014-05-06
	* Improve error message for name-based transition conflicts.
	* Revert libsepol: filename_trans: use some better sorting to compare and merge.
	* Report source file and line information for neverallow failures.
	* Fix valgrind errors in constraint_expr_eval_reason from Richard Haines.
	* Add sepol_validate_transition_reason_buffer function from Richard Haines.

2.2 2013-10-30
	* Allow constraint denial cause to be determined from Richard Haines.
	  - Add kernel policy version 29.
	  - Add modular policy version 17.
	  - Add sepol_compute_av_reason_buffer(), sepol_string_to_security_class(), sepol_string_to_av_perm().
	* Support overriding Makefile RANLIB from Sven Vermeulen.
	* Fix man pages from Laurent Bigonville.

2.1.9 2013-02-01
	* filename_trans: use some better sorting to compare and merge
	* coverity fixes
	* implement default type policy syntax
	* Fix memory leak issues found by Klocwork

2.1.8 2012-09-13
	* fix neverallow checking on attributes
	* Move context_copy() after switch block in ocontext_copy_*().
	* check for missing initial SID labeling statement.
	* Add always_check_network policy capability
	* role_fix_callback skips out-of-scope roles during expansion.

2.1.7 2012-06-28
	* reserve policycapability for redhat testing of ptrace child
	* cosmetic changes to make the source easier to read
	* prepend instead of append to filename_trans list
	* Android/MacOS X build support

2.1.6 2012-04-23
	* allocate enough space to hold filename in trans rules

2.1.5 2012-03-28
	* checkpolicy: implement new default labeling behaviors

2.1.4 2011-10-03
	* regenerate .pc on VERSION change
	* Move ebitmap_* functions from mcstrans to libsepol
	* expand: do filename_trans type comparison on mapped representation

2.1.3 2011-09-15
	* Skip writing role attributes for policy.X and
	* Indicate when boolean is indeed a tunable.
	* Separate tunable from boolean during compile.
	* Write and read TUNABLE flags in related
	* Copy and check the cond_bool_datum_t.flags during link.
	* Permanently discard disabled branches of tunables in
	* Skip tunable identifier and cond_node_t in expansion.
	* Create a new preserve_tunables flag
	* Preserve tunables when required by semodule program.
	* setools expects expand_module_avrules to be an exported
	* tree: default make target to all not

2.1.2 2011-08-03
	* Only call role_fix_callback for base.p_roles during expansion.
	* use mapped role number instead of module role number

2.1.1 2011-08-01
	* Minor fix to reading policy with filename transition rules

2.1.0 2011-07-27
	* Release, minor version bump

2.0.46 2011-07-25
	* Add role attribute support by Harry Ciao

2.0.45 2011-05-02
	* Warn if filename_trans rules are dropped by Steve Lawrence.

2.0.44 2011-04-13
	* Fixes for new role_transition class field by Eric Paris.
	* Add libsepol support for filename_trans rules by Eric Paris.

2.0.43 2011-04-11
	* Add new class field in role_transition by Harry Ciao.

2.0.42 2010-12-16
	* Fix compliation under GCC 4.6 by Justin Mattock

2.0.41 2009-11-18
	* Fixed typo in error message from Manoj Srivastava.

2.0.40 2009-10-29
	* Add pkgconfig file from Eamon Walsh.

2.0.39 2009-10-14
	* Add support for building Xen policies from Paul Nuzzi.

2.0.38 2009-09-01
	* Check last offset in the module package against the file size.
	Reported by Manoj Srivastava for bug filed by Max Kellermann.

2.0.37 2009-07-07
	* Add method to check disable dontaudit flag from Christopher Pardy.

2.0.36 2009-03-25
	* Fix boolean state smashing from Joshua Brindle.

2.0.35 2009-02-19
        * Fix alias field in module format, caused by boundary format change
          from Caleb Case.

2.0.34 2008-10-09
	* Add bounds support from KaiGai Kohei.
	* Fix invalid aliases bug from Joshua Brindle.

2.0.33 2008-09-29
	* Revert patch that removed expand_rule.

2.0.32 2008-07-07
	* Allow require then declare in the source policy from Joshua Brindle.

2.0.31 2008-06-13
	* Fix mls_semantic_level_expand() to handle a user require w/o MLS information from Stephen Smalley.

2.0.30 2008-06-06
	* Fix endianness bug in the handling of network node addresses from Stephen Smalley.
	  Only affects big endian platforms.
	  Bug reported by John Weeks of Sun upon policy mismatch between x86 and sparc.

2.0.29 2008-05-27
	* Merge user and role mapping support from Joshua Brindle.

2.0.28 2008-05-05
	* Fix mls_level_convert() to gracefully handle an empty user declaration/require from Stephen Smalley.

2.0.27 2008-04-18
	* Belatedly merge test for policy downgrade from Todd Miller.

2.0.26 2008-03-24
	* Add permissive domain support from Eric Paris.

2.0.25 2008-03-04
	* Drop unused ->buffer field from struct policy_file.

2.0.24 2008-03-04
	* Add policy_file_init() initalizer for struct policy_file and use it, from Todd C. Miller.

2.0.23 2008-02-28
	* Accept "Flask" as an alternate identifier string in kernel policies from Stephen Smalley.

2.0.22 2008-02-28
	* Add support for open_perms policy capability from Eric Paris.

2.0.21 2008-02-20
	* Fix invalid memory allocation in policydb_index_others() from Jason Tang.

2.0.20 2008-02-04
	* Port of Yuichi Nakamura's tune avtab to reduce memory usage patch from the kernel avtab to libsepol from Stephen Smalley.

2.0.19 2008-02-02
	* Add support for consuming avrule_blocks during expansion to reduce
	  peak memory usage from Joshua Brindle.

2.0.18 2008-01-02
	* Added support for policy capabilities from Todd Miller.

2.0.17 2007-12-21
	* Prevent generation of policy.18 with MLS enabled from Todd Miller.

2.0.16 2007-12-07
	* print module magic number in hex on mismatch, from Todd Miller.

2.0.15 2007-11-29
	* clarify and reduce neverallow error reporting from Stephen Smalley.

2.0.14 2007-11-05
	* Reject self aliasing at link time from Stephen Smalley.

2.0.13 2007-11-05
	* Allow handle_unknown in base to be overridden by semanage.conf from Stephen Smalley.

2.0.12 2007-10-11
	* Fixed bug in require checking from Stephen Smalley.
	* Added user hierarchy checking from Todd Miller.	

2.0.11 2007-09-24
	* Pass CFLAGS to CC even on link command, per Dennis Gilmore.

2.0.10 2007-09-18
	* Merged support for the handle_unknown policydb flag from Eric Paris.

2.0.9 2007-08-29
	* Moved next_entry and put_entry out-of-line to reduce code size from Ulrich Drepper.

2.0.8 2007-08-28
	* Fixed module_package_read_offsets bug introduced by the prior patch.

2.0.7 2007-08-23
	* Eliminate unaligned accesses from policy reading code from Stephen Smalley.

2.0.6 2007-08-16
	* Allow dontaudits to be turned off during policy expansion from
	  Joshua Brindle.

2.0.5 2007-08-01
	* Fix sepol_context_clone to handle a NULL context correctly.
          This happens for e.g. semanage_fcontext_set_con(sh, fcontext, NULL)
	  to set the file context entry to "<<none>>".

2.0.4 2007-06-20
	* Merged error handling patch from Eamon Walsh.

2.0.3 2007-04-13
	* Merged add boolmap argument to expand_module_avrules() from Chris PeBenito.

2.0.2 2007-03-30
	* Merged fix from Karl to remap booleans at expand time to 
	  avoid holes in the symbol table.

2.0.1 2007-02-06
	* Merged libsepol segfault fix from Stephen Smalley for when
	  sensitivities are required but not present in the base.
	
2.0.0 2007-02-01
	* Merged patch to add errcodes.h to libsepol by Karl MacMillan.
	
1.16.0 2007-01-18
	* Updated version for stable branch.

1.15.3 2006-11-27
	* Merged patch to compile wit -fPIC instead of -fpic from
	  Manoj Srivastava to prevent hitting the global offest table
	  limit. Patch changed to include libselinux and libsemanage in
	  addition to libselinux.
1.15.2 2006-10-31
	* Merged fix from Karl MacMillan for a segfault when linking
	  non-MLS modules with users in them.

1.15.1 2006-10-24
	* Merged fix for version comparison that was preventing range
	  transition rules from being written for a version 5 base policy
	  from Darrel Goeddel.

1.14 2006-10-17
	* Updated version for release.

1.12.28 2006-09-28
	* Build libsepol's static object files with -fpic

1.12.27 2006-09-28
	* Merged mls user and range_transition support in modules
	  from Darrel Goeddel

1.12.26 2006-09-05
	* Merged range transition enhancements and user format changes
	  Darrel Goeddel

1.12.25 2006-08-24
	* Merged conditionally expand neverallows patch from Jeremy Mowery.
	* Merged refactor expander patch from Jeremy Mowery.

1.12.24 2006-08-03
	* Merged libsepol unit tests from Joshua Brindle.

1.12.23 2006-08-03
	* Merged symtab datum patch from Karl MacMillan.

1.12.22 2006-08-03
	* Merged netfilter contexts support from Chris PeBenito.

1.12.21 2006-07-28
	* Merged helpful hierarchy check errors patch from Joshua Brindle.

1.12.20 2006-07-25
	* Merged semodule_deps patch from Karl MacMillan.
	  This adds source module names to the avrule decls.

1.12.19 2006-06-29
	* Lindent.

1.12.18 2006-06-26
	* Merged optionals in base take 2 patch set from Joshua Brindle.

1.12.17 2006-05-30
	* Revert 1.12.16.

1.12.16 2006-05-30
	* Merged cleaner fix for bool_ids overflow from Karl MacMillan,
	  replacing the prior patch.

1.12.15 2006-05-30
	* Merged fixes for several memory leaks in the error paths during
	  policy read from Serge Hallyn.

1.12.14 2006-05-25
	* Fixed bool_ids overflow bug in cond_node_find and cond_copy_list,
	  based on bug report and suggested fix by Cedric Roux.

1.12.13 2006-05-24
	* Merged sens_copy_callback, check_role_hierarchy_callback,
	  and node_from_record fixes from Serge Hallyn.

1.12.12 2006-05-22
	* Added sepol_policydb_compat_net() interface for testing whether
	  a policy requires the compatibility support for network checks
	  to be enabled in the kernel.

1.12.11 2006-05-17
	* Merged patch to initialize sym_val_to_name arrays from Kevin Carr.
	  Reworked to use calloc in the first place, and converted some other
	  malloc/memset pairs to calloc calls.

1.12.10 2006-05-08
	* Merged patch to revert role/user decl upgrade from Karl MacMillan.

1.12.9 2006-05-08
	* Dropped tests from all Makefile target.

1.12.8 2006-05-05
	* Merged fix warnings patch from Karl MacMillan.

1.12.7 2006-05-05
	* Merged libsepol test framework patch from Karl MacMillan.

1.12.6 2006-04-28
	* Fixed cond_normalize to traverse the entire cond list at link time.

1.12.5 2006-04-03
	* Merged fix for leak of optional package sections from Ivan Gyurdiev.

1.12.4 2006-03-29
	* Generalize test for bitmap overflow in ebitmap_set_bit.

1.12.3 2006-03-27
	* Fixed attr_convert_callback and expand_convert_type_set
	  typemap bug.

1.12.2 2006-03-24
	* Fixed avrule_block_write num_decls endian bug.

1.12.1 2006-03-20
	* Fixed sepol_module_package_write buffer overflow bug.

1.12 2006-03-14
	* Updated version for release.

1.11.20 2006-03-08
	* Merged cond_evaluate_expr fix from Serge Hallyn (IBM).
	* Fixed bug in copy_avrule_list reported by Ivan Gyurdiev.

1.11.19 2006-02-21
	* Merged sepol_policydb_mls_enabled interface and error handling
	  changes from Ivan Gyurdiev.
	
1.11.18 2006-02-16
	* Merged node_expand_addr bugfix and node_compare* change from
	  Ivan Gyurdiev.

1.11.17 2006-02-15
	* Merged nodes, ports: always prepend patch from Ivan Gyurdiev.
	* Merged bug fix patch from Ivan Gyurdiev.

1.11.16 2006-02-14
	* Added a defined flag to level_datum_t for use by checkpolicy.

1.11.15 2006-02-14
	* Merged nodecon support patch from Ivan Gyurdiev.
	* Merged cleanups patch from Ivan Gyurdiev.	

1.11.14 2006-02-13
	* Merged optionals in base patch from Joshua Brindle.
	
1.11.13 2006-02-07
	* Merged seuser/user_extra support patch from Joshua Brindle.
	* Merged fix patch from Ivan Gyurdiev.

1.11.12 2006-02-02
	* Merged clone record on set_con patch from Ivan Gyurdiev.	

1.11.11 2006-02-01
	* Merged assertion copying bugfix from Joshua Brindle.
	* Merged sepol_av_to_string patch from Joshua Brindle.

1.11.10 2006-01-30
	* Merged cond_expr mapping and package section count bug fixes
	  from Joshua Brindle.
	* Merged improve port/fcontext API patch from Ivan Gyurdiev.	
	* Merged fixes for overflow bugs on 64-bit from Ivan Gyurdiev.

1.11.9 2006-01-12
	* Merged size_t -> unsigned int patch from Ivan Gyurdiev.

1.11.8 2006-01-09
	* Merged 2nd const in APIs patch from Ivan Gyurdiev.

1.11.7 2006-01-06
	* Merged const in APIs patch from Ivan Gyurdiev.
	* Merged compare2 function patch from Ivan Gyurdiev.

1.11.6 2006-01-06
	* Fixed hierarchy checker to only check allow rules.

1.11.5 2006-01-05
	* Merged further fixes from Russell Coker, specifically:
	  - av_to_string overflow checking
	  - sepol_context_to_string error handling
	  - hierarchy checking memory leak fixes and optimizations
	  - avrule_block_read variable initialization
	* Marked deprecated code in genbools and genusers.

1.11.4 2006-01-05
	* Merged bugfix for sepol_port_modify from Russell Coker.

1.11.3 2006-01-05
	* Fixed bug in sepol_iface_modify error path noted by Ivan Gyurdiev.
	* Merged port ordering patch from Ivan Gyurdiev.

1.11.2 2006-01-04
	* Merged patch series from Ivan Gyurdiev.
	  This includes patches to:
	  - support ordering of records in compare function
	  - enable port interfaces
	  - add interfaces for context validity and range checks
	  - add include guards

1.11.1 2005-12-16
	* Fixed mls_range_cpy bug.

1.10 2005-12-07
	* Updated version for release.

1.9.42 2005-12-05
	* Dropped handle from user_del_role interface.	

1.9.41 2005-11-28
	* Merged remove defrole from sepol patch from Ivan Gyurdiev.

1.9.40 2005-11-15
	* Merged module function and map file cleanup from Ivan Gyurdiev.
	* Merged MLS and genusers cleanups from Ivan Gyurdiev.

1.9.39 2005-11-09
	Prepare for removal of booleans* and *.users files.
	* Cleaned up sepol_genbools to not regenerate the image if
	  there were no changes in the boolean values, including the
	  degenerate case where there are no booleans or booleans.local
	  files.
	* Cleaned up sepol_genusers to not warn on missing local.users.
	
1.9.38 2005-11-08
	* Removed sepol_port_* from libsepol.map, as the port interfaces
	  are not yet stable.

1.9.37 2005-11-04
	* Merged context destroy cleanup patch from Ivan Gyurdiev.

1.9.36 2005-11-03
	* Merged context_to_string interface change patch from Ivan Gyurdiev.

1.9.35 2005-11-01
	* Added src/dso.h and src/*_internal.h.
	  Added hidden_def for exported symbols used within libsepol.
	  Added hidden for symbols that should not be exported by
	  the wildcards in libsepol.map.

1.9.34 2005-10-31
	* Merged record interface, record bugfix, and set_roles patches 
	  from Ivan Gyurdiev.

1.9.33 2005-10-27
	* Merged count specification change from Ivan Gyurdiev.	

1.9.32 2005-10-26
	* Added further checking and error reporting to 
	  sepol_module_package_read and _info.

1.9.31 2005-10-26
	* Merged sepol handle passing, DEBUG conversion, and memory leak
	  fix patches from Ivan Gyurdiev.

1.9.30 2005-10-25
	* Removed processing of system.users from sepol_genusers and
	  dropped delusers logic.

1.9.29 2005-10-25
	* Removed policydb_destroy from error path of policydb_read,
	  since create/init/destroy/free of policydb is handled by the
	  caller now.
	* Fixed sepol_module_package_read to handle a failed policydb_read
	  properly.

1.9.28 2005-10-25
	* Merged query/exists and count patches from Ivan Gyurdiev.

1.9.27 2005-10-25
	* Merged fix for pruned types in expand code from Joshua Brindle.
	* Merged new module package format code from Joshua Brindle.

1.9.26 2005-10-24
	* Merged context interface cleanup, record conversion code, 
	  key passing, and bug fix patches from Ivan Gyurdiev.               

1.9.25 2005-10-21
	* Merged users cleanup patch from Ivan Gyurdiev.

1.9.24 2005-10-21
	* Merged user record memory leak fix from Ivan Gyurdiev.
	* Merged reorganize users patch from Ivan Gyurdiev.

1.9.23 2005-10-19
	* Added check flag to expand_module() to control assertion
	  and hierarchy checking on expansion.

1.9.22 2005-10-19
	* Reworked check_assertions() and hierarchy_check_constraints()
	  to take handles and use callback-based error reporting.
	* Changed expand_module() to call check_assertions() and 
	  hierarchy_check_constraints() prior to returning the expanded
	  policy.

1.9.21 2005-10-18
	* Changed sepol_module_package_set_file_contexts to copy the
	  file contexts data since it is internally managed.

1.9.20 2005-10-18
	* Added sepol_policy_file_set_handle interface to associate
	  a handle with a policy file.
	* Added handle argument to policydb_from_image/to_image.
	* Added sepol_module_package_set_file_contexts interface.
	* Dropped sepol_module_package_create_file interface.
	* Reworked policydb_read/write, policydb_from_image/to_image, 
	  and sepol_module_package_read/write to use callback-based error
	  reporting system rather than DEBUG.  

1.9.19 2005-10-17
	* Reworked link_packages, link_modules, and expand_module to use
	callback-based error reporting system rather than error buffering.

1.9.18 2005-10-14
	* Merged conditional expression mapping fix in the module linking
	code from Joshua Brindle.

1.9.17 2005-10-13
	* Hid sepol_module_package type definition, and added get interfaces.

1.9.16 2005-10-13
	* Merged new callback-based error reporting system from Ivan
	Gyurdiev.

1.9.15 2005-10-13
	* Merged support for require blocks inside conditionals from
	Joshua Brindle (Tresys).

1.9.14 2005-10-07
	* Fixed use of policydb_from_image/to_image to ensure proper
	init of policydb.

1.9.13 2005-10-07
	* Isolated policydb internal headers under <sepol/policydb/*.h>.
	These headers should only be used by users of the static libsepol.
	Created new <sepol/policydb.h> with new public types and interfaces
	for shared libsepol.
	Created new <sepol/module.h> with public types and interfaces moved
	or wrapped from old module.h, link.h, and expand.h, adjusted for
	new public types for policydb and policy_file.
	Added public interfaces to libsepol.map.
	Some implementation changes visible to users of the static libsepol:
	1) policydb_read no longer calls policydb_init.
	Caller must do so first.
	2) policydb_init no longer takes policy_type argument.
	Caller must set policy_type separately.
	3) expand_module automatically enables the global branch.  
	Caller no longer needs to do so.
	4) policydb_write uses the policy_type and policyvers from the 
	policydb itself, and sepol_set_policyvers() has been removed.
	
1.9.12 2005-10-06
	* Merged function renaming and static cleanup from Ivan Gyurdiev.

1.9.11 2005-10-05
	* Merged bug fix for check_assertions handling of no assertions
	from Joshua Brindle (Tresys).
	
1.9.10 2005-10-04
	* Merged iterate patch from Ivan Gyurdiev.

1.9.9 2005-10-03
	* Merged MLS in modules patch from Joshua Brindle (Tresys).

1.9.8 2005-09-30
	* Merged pointer typedef elimination patch from Ivan Gyurdiev.
	* Merged user list function, new mls functions, and bugfix patch
	  from Ivan Gyurdiev.

1.9.7 2005-09-28
	* Merged sepol_get_num_roles fix from Karl MacMillan (Tresys).

1.9.6 2005-09-23
	* Merged bug fix patches from Joshua Brindle (Tresys).

1.9.5 2005-09-21
	* Merged boolean record and memory leak fix patches from Ivan
	Gyurdiev.

1.9.4 2005-09-19
	* Merged interface record patch from Ivan Gyurdiev.

1.9.3 2005-09-14
	* Merged fix for sepol_enable/disable_debug from Ivan
	Gyurdiev.

1.9.2 2005-09-14
	* Merged stddef.h patch and debug conversion patch from 
	Ivan Gyurdiev.

1.9.1 2005-09-09
	* Fixed expand_avtab and expand_cond_av_list to keep separate
	entries with identical keys but different enabled flags.

1.8 2005-09-06
	* Updated version for release.

1.7.24 2005-08-31
	* Fixed symtab_insert return value for duplicate declarations.

1.7.23 2005-08-31
	* Merged fix for memory error in policy_module_destroy from
	Jason Tang (Tresys).

1.7.22 2005-08-26
	* Merged fix for memory leak in sepol_context_to_sid from
	Jason Tang (Tresys).

1.7.21 2005-08-25
	* Merged fixes for resource leaks on error paths and
	  change to scope_destroy from Joshua Brindle (Tresys).

1.7.20 2005-08-23
	* Merged more fixes for resource leaks on error paths 
	  from Serge Hallyn (IBM).  Bugs found by Coverity. 

1.7.19 2005-08-19
	* Changed to treat all type conflicts as fatal errors.

1.7.18 2005-08-18
	* Merged several error handling fixes from 
	  Serge Hallyn (IBM).  Bugs found by Coverity.	

1.7.17 2005-08-15
	* Fixed further memory leaks found by valgrind.

1.7.16 2005-08-15
	* Fixed several memory leaks found by valgrind.

1.7.15 2005-08-12
	* Fixed empty list test in cond_write_av_list.  Bug found by
	  Coverity, reported by Serge Hallyn (IBM).
	* Merged patch to policydb_write to check errors 
	  when writing the type->attribute reverse map from
	  Serge Hallyn (IBM).  Bug found by Coverity.
	* Fixed policydb_destroy to properly handle NULL type_attr_map
	  or attr_type_map.

1.7.14 2005-08-12
	* Fixed use of uninitialized data by expand_avtab_node by
	  clearing type_val_to_struct in policydb_index_others.

1.7.13 2005-08-11
	* Improved memory use by SELinux by both reducing the avtab 
	  node size and reducing the number of avtab nodes (by not
	  expanding attributes in TE rules when possible).  Added
	  expand_avtab and expand_cond_av_list functions for use by
	  assertion checker, hierarchy checker, compatibility code,
	  and dispol.  Added new inline ebitmap operators and converted
	  existing users of ebitmaps to the new operators for greater 
	  efficiency.
	  Note:  The binary policy format version has been incremented to 
	  version 20 as a result of these changes.

1.7.12 2005-08-10
	* Fixed bug in constraint_node_clone handling of name sets.

1.7.11 2005-08-08
	* Fix range_trans_clone to map the type values properly.

1.7.10 2005-08-02
	* Merged patch to move module read/write code from libsemanage
	  to libsepol from Jason Tang (Tresys).

1.7.9 2005-08-02
	* Enabled further compiler warning flags and fixed them.

1.7.8 2005-08-02
	* Merged user, context, port records patch from Ivan Gyurdiev.
	* Merged key extract function patch from Ivan Gyurdiev.

1.7.7 2005-07-27
	* Merged mls_context_to_sid bugfix from Ivan Gyurdiev.

1.7.6 2005-07-26
	* Merged context reorganization, memory leak fixes, 
	  port and interface loading, replacements for genusers and
	  genbools, debug traceback, and bugfix patches from Ivan Gyurdiev.
	* Merged uninitialized variable bugfix from Dan Walsh.

1.7.5 2005-07-18
	* Merged debug support, policydb conversion functions from Ivan Gyurdiev (Red Hat).
	* Removed genpolbools and genpolusers utilities.

1.7.4 2005-07-18
	* Merged hierarchy check fix from Joshua Brindle (Tresys).

1.7.3 2005-07-13
	* Merged header file cleanup and memory leak fix from Ivan Gyurdiev (Red Hat).

1.7.2 2005-07-11
	* Merged genbools debugging message cleanup from Red Hat.

1.7.1 2005-07-06
	* Merged loadable module support from Tresys Technology.

1.6 2005-06-20
	* Updated version for release.

1.5.10 2005-05-19
	* License changed to LGPL v2.1, see COPYING.

1.5.9 2005-05-16
	* Added sepol_genbools_policydb and sepol_genusers_policydb for
	  audit2why.

1.5.8 2005-05-13
	* Added sepol_ prefix to Flask types to avoid 
	  namespace collision with libselinux.

1.5.7 2005-05-13
	* Added sepol_compute_av_reason() for audit2why.

1.5.6 2005-04-25
	* Fixed bug in role hierarchy checker.

1.5.5 2005-04-13
	* Merged hierarchical type/role patch from Tresys Technology.
	* Merged MLS fixes from Darrel Goeddel of TCS.

1.5.4 2005-04-13
	* Changed sepol_genusers to not delete users by default,
	and added a sepol_set_delusers function to enable deletion.
	Also, removed special case handling of system_u and user_u.
	
1.5.3 2005-03-29
	* Merged booleans.local patch from Dan Walsh.

1.5.2 2005-03-16
	* Added man page for sepol_check_context.

1.5.1 2005-03-15
	* Added man page for sepol_genusers function.
	* Merged man pages for genpolusers and chkcon from Manoj Srivastava.

1.4 2005-03-09
	* Updated version for release.

1.3.8 2005-03-08
	* Cleaned up error handling in sepol_genusers and sepol_genbools.

1.3.7 2005-02-28
	* Merged sepol_debug and fclose patch from Dan Walsh.

1.3.6 2005-02-22
	* Changed sepol_genusers to also use getline and correctly handle
	  EOL.

1.3.5 2005-02-17
	* Merged range_transition support from Darrel Goeddel (TCS).

1.3.4 2005-02-16
	* Added sepol_genusers function.

1.3.3 2005-02-14
	* Merged endianness and compute_av patches from Darrel Goeddel (TCS).

1.3.2 2005-02-09
	* Changed relabel Makefile target to use restorecon.

1.3.1 2005-01-26
	* Merged enhanced MLS support from Darrel Goeddel (TCS).

1.2.1 2005-01-19
	* Merged build fix patch from Manoj Srivastava.

1.2 2004-10-07
	* MLS build fixes.
	* Added sepol_set_policydb_from_file and sepol_check_context for setfiles.

1.0 2004-08-19
	* Initial public release.

0.4 2004-08-13
	* Merged patch from Dan Walsh to ignore case on booleans.
	* Changed sepol_genbools* to preserve the original policy version.
	* Replaced exported global variables with set functions. 
	* Moved genpolbools utility from checkpolicy to libsepol.
	* Added man pages for sepol_genbools* and genpolbools.

0.3 2004-08-10
	* Added ChangeLog, COPYING, spec file.
	* Added sepol_genbools_array() for load_policy.
	* Created libsepol.map to limit exported symbols in shared library. 

0.2 2004-08-09
	* Exported other functions for checkpolicy and friends.
	* Renamed service and sidtab functions to avoid libselinux conflict.
	* Removed original code from checkpolicy, which now uses libsepol.
	* Code cleanup:  kill legacy references to kernel types/functions.

0.1 2004-08-06
	* Moved checkpolicy core logic into a library.
	* Exported sepol_genbools() for load_policy.
