Skip to content

Commit 072f5cf

Browse files
author
stroeder
committed
Added safety assertion when importing _ldap: ldap.pkginfo.__version__ must match _ldap.__version__
1 parent 0f8e8ba commit 072f5cf

File tree

5 files changed

+30
-11
lines changed

5 files changed

+30
-11
lines changed

CHANGES

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@ Modules/
1313
Lib/
1414
* ldap.__version__, ldap.__author__ and ldap.__license__ now
1515
imported from new sub-module ldap.pkginfo also to setup.py
16+
* Added safety assertion when importing _ldap:
17+
ldap.pkginfo.__version__ must match _ldap.__version__
1618
* removed stand-alone module dsml
1719
* slapdtest.SlapdObject.restart() just restarts slapd
1820
without cleaning any data

Lib/ldap/__init__.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,11 @@
1717
_trace_file = sys.stderr
1818
_trace_stack_limit = None
1919

20+
from ldap.pkginfo import __version__
21+
2022
import _ldap
23+
assert _ldap.__version__==__version__, \
24+
ImportError('ldap %s and _ldap %s version mismatch!' % (__version__,_ldap.__version__))
2125
from _ldap import *
2226

2327
OPT_NAMES_DICT = {}

Lib/ldap/controls/__init__.py

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,19 @@
99
Each class provides support for a certain control.
1010
"""
1111

12-
from ldap import __version__
12+
from ldap.pkginfo import __version__
13+
14+
import _ldap
15+
assert _ldap.__version__==__version__, \
16+
ImportError('ldap %s and _ldap %s version mismatch!' % (__version__,_ldap.__version__))
17+
18+
import ldap
19+
20+
try:
21+
from pyasn1.error import PyAsn1Error
22+
except ImportError:
23+
PyAsn1Error = None
24+
1325

1426
__all__ = [
1527
'KNOWN_RESPONSE_CONTROLS',
@@ -32,13 +44,6 @@
3244
# response control OID to class registry
3345
KNOWN_RESPONSE_CONTROLS = {}
3446

35-
import _ldap,ldap
36-
37-
try:
38-
from pyasn1.error import PyAsn1Error
39-
except ImportError:
40-
PyAsn1Error = None
41-
4247

4348
class RequestControl:
4449
"""

Lib/ldap/controls/libldap.py

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,14 @@
66
See https://www.python-ldap.org/ for details.
77
"""
88

9-
import _ldap,ldap
9+
from ldap.pkginfo import __version__
10+
11+
import _ldap
12+
assert _ldap.__version__==__version__, \
13+
ImportError('ldap %s and _ldap %s version mismatch!' % (__version__,_ldap.__version__))
14+
15+
import ldap
16+
1017
from ldap.controls import RequestControl,LDAPControl,KNOWN_RESPONSE_CONTROLS
1118

1219

Lib/ldap/dn.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,11 @@
77
- Tested with Python 2.0+
88
"""
99

10-
from ldap import __version__
11-
10+
from ldap.pkginfo import __version__
1211

1312
import _ldap
13+
assert _ldap.__version__==__version__, \
14+
ImportError('ldap %s and _ldap %s version mismatch!' % (__version__,_ldap.__version__))
1415

1516
import ldap.functions
1617

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy