Projet

Général

Profil

0007-backends-ldap-apply-force_bytes-inside-all-structure.patch

Benjamin Dauvergne, 04 juillet 2018 16:41

Télécharger (1,61 ko)

Voir les différences:

Subject: [PATCH 7/7] backends/ldap: apply force_bytes inside all structured
 settings (fixes #23698)

 src/authentic2/backends/ldap_backend.py | 12 ++++++++++++
 1 file changed, 12 insertions(+)
src/authentic2/backends/ldap_backend.py
58 58
        break
59 59

  
60 60

  
61
def map_bytes(d):
62
    if isinstance(d, six.string_types):
63
        return force_bytes(d)
64
    elif isinstance(d, (list, tuple)):
65
        return d.__class__(map_bytes(x) for x in d)
66
    elif isinstance(d, dict):
67
        return {map_bytes(k): map_bytes(v) for k, v in d.iteritems()}
68

  
69

  
61 70
class LDAPUser(get_user_model()):
62 71
    SESSION_LDAP_DATA_KEY = 'ldap-data'
63 72
    _changed = False
......
1118 1127
                if not isinstance(cls._DEFAULTS[d], bool) and d in cls._REQUIRED and not block[d]:
1119 1128
                    raise ImproperlyConfigured(
1120 1129
                        'LDAP_AUTH_SETTINGS: attribute %r is required but is empty')
1130
                # force_bytes all strings in iterable or dict
1131
                if isinstance(block[d], (list, tuple, dict)):
1132
                    block[d] = map_bytes(block[d])
1121 1133
        for i in cls._TO_ITERABLE:
1122 1134
            if isinstance(block[i], six.string_types):
1123 1135
                block[i] = (block[i],)
1124
-