For changes before version 3.0, see HISTORY.rst
.
- Prevent untrusted access to
AccessControl.userfolder.UserFolder.data
(fixes GHSA-g5vw-3h65-2q3v).
- Add final support for Python 3.13.
- Respect
PURE_PYTHON
environment variable set to0
when running tests. - Let the roles access in
rolesForPermissionOn
interpretAttributeError
andUnauthorized
as "no roles definition for this permission at this object" and report any other exception (for the Python and C implementation). We have to treatUnauthorized
likeAttributeError
to supportShared.DC.Scripts.Bindings.UnauthorizedBinding
which raisesUnauthorized
for any access.
- Add preliminary support for Python 3.13 as of 3.13b1.
- Remove support for Python 3.7.
- Build Windows wheels on GHA.
- Make dict views (.keys(), .items() and .values()) behave like their unrestricted versions. (#147)
- Make .items() validate each keys and values, like .keys() and .values() do.
- Fix build errors on recent macOS versions.
- Add support for Python 3.12.
- Fix information disclosure through
str.format_map
. (CVE-2023-41050)
- Update C header files for
ExtensionClass
andAcquisition
from the original packages where needed. (#140) - Add preliminary support for Python 3.12a5.
- Build Linux binary wheels for Python 3.11
- Drop support for Python 2.7, 3.5, 3.6.
- Add support for building arm64 wheels on macOS.
- Add support for final Python 3.11 release.
- Switch from
-Ofast
to-O3
when compiling code for Linux wheels. (#133) - Add support for Python 3.11 (as of 3.11.0rc2).
- Add support for Python 3.11 (as of 3.11.0b5).
- Support
default
argument innext
built-in function. (#131)
- Prevent race condition in guarded_import (#123)
- Provide
AccessControl.get_safe_globals
to facilitate safe use. - Honor
PURE_PYTHON
environment variable to enable python implementation during runtime. - Add support for Python 3.10.
- Fix Appveyor configuration so tests can run and wheels build.
NOTE: This release has been yanked from PyPI due to wheel build issues.
- Fix a remote code execution issue by preventing access to
string.Formatter
from restricted code.
- Add support for Python 3.9.
- Remove deprecated classes and functions in
(see #32):
AccessControl/DTML.py
AccessControl/Owned.py
AccessControl/Role.py
AccessControl/Permissions.py
- Add deprecation warnings for BBB imports in:
AccessControl/AuthEncoding.py
AccessControl/Owned.py
AccessControl/Role.py
AccessControl/User.py
- Although this version might run on Zope 4, it is no longer supported because of the dropped deprecation warnings.
- Add missing permission
Manage WebDAV Locks
- Fix regression for BBB import of
`users.UnrestrictedUser
(#94) - Add a check if database is present in
.owner.ownerInfo
. (#91).
- Python 3: Allow iteration over the result of
dict.{keys,values,items}
(#89).
Changes since 3.0.12:
- Add support for Python 3.5, 3.6, 3.7 and 3.8.
- Restore simple access to bytes methods in Python 3 (#83)
- Clarify deprecation warnings for several BBB shims. (#32)
- Add a test to prove that a user folder flag cannot be acquired elsewhere. (#7)
- Tighten basic auth string handling in
BasicUserFolder.identify
(#56) - Prevent the Zope 4 ZMI from showing an add dialog for the user folder. (#82)
- Fix order of roles returned by
AccessControl.rolemanager.RoleManager.userdefined_roles
. - Add configuration for zodbupdate.
- Add
TaintedBytes
besidesTaintedString
inAccessControl.tainted
. (#57) - Security fix: In
str.format
, check the security for attributes that are accessed. (Ported from 2.13). - Port
override_container
context manager here from 2.13. - Add AppVeyor configuration to automate building Windows eggs.
- Fix for compilers that only support C89 syntax (e.g. on Windows).
- Sanitize and test RoleManager role handling.
- Depend on RestrictedPython >= 4.0.
- #16: Fixed permission handling by avoiding column and row numbers as identifiers for permissions and roles.
- Extract
.AuthEncoding
to its own package for reuse. - Declare missing dependency on BTrees.
- Drop Record dependency, which now does its own security declaration.
- Remove leftovers from history support dropped in Zope.
- Remove duplicate guard against * imports. (#60)
- Avoid acquiring
access
from module wrapped bySecurityInfo._ModuleSecurityInfo
. See: #12
- Harden test fix for machines that do not define localhost.
- Test fix for machines that do not define localhost.
- GitHub #6: Do not pass SecurityInfo instance itself to declarePublic/declarePrivate
when using the public/private decorator. This fixes
Conflicting security declarations
warnings on Zope startup. - LP #1248529: Leave existing security manager in place inside
RoleManager.manage_getUserRolesAndPermissions
.
- LP #1169923: ensure initialization of shared
ImplPython
state (used byImplC
) when using the "C" security policy. Thanks to Arnaud Fontaine for the patch.
- Remove long-deprecated 'Shared' roles support (pre-dates Zope, never used by Zope itself)
- Prevent infinite loop when looking up local roles in an acquisition chain with cycles.
- LP #1071067: Use a stronger random number generator and a constant time comparison function.
- LP #966101: Recognize special zope2.Private permission in ZCML role directive.
- LP #1047318: Tighten import restrictions for restricted code.
- Fix a bug in ZopeSecurityPolicy.py. Global variable rolesForPermissionOn could be overridden if __role__ had custom rolesForPermissionOn.
- Add Anonymous as a default role for Public permission.
- Fix tests under Python 2.6.
- Added decorators for public, private and protected security declarations.
- Update tests to take advantage of automatic test suite discovery.