Bug 53975 - searching for umlauts leads to traceback
searching for umlauts leads to traceback
Status: CLOSED FIXED
Product: UCS
Classification: Unclassified
Component: UMC (Generic)
UCS 5.0
Other Linux
: P5 normal (vote)
: UCS 5.0-1-errata
Assigned To: Florian Best
Christian Castens
https://git.knut.univention.de/univen...
:
: 53695 (view as bug list)
Depends on:
Blocks:
  Show dependency treegraph
 
Reported: 2021-10-22 09:27 CEST by Tobias Wenzel
Modified: 2022-03-25 10:20 CET (History)
3 users (show)

See Also:
What kind of report is it?: Bug Report
What type of bug is this?: 5: Major Usability: Impairs usability in key scenarios
Who will be affected by this bug?: 3: Will affect average number of installed domains
How will those affected feel about the bug?: 2: A Pain – users won’t like this once they notice it
User Pain: 0.171
Enterprise Customer affected?:
School Customer affected?:
ISV affected?:
Waiting Support:
Flags outvoted (downgraded) after PO Review:
Ticket number: 2022020221000386
Bug group (optional):
Max CVSS v3 score:
best: Patch_Available+


Attachments
umlaut-search (654.05 KB, image/gif)
2021-10-22 09:27 CEST, Tobias Wenzel
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Tobias Wenzel univentionstaff 2021-10-22 09:27:55 CEST
Created attachment 10846 [details]
umlaut-search

searching for umlauts leads to traceback

univention-app info
UCS: 5.0-0 errata127
Installed: ucsschool=5.0 b3 4.4/ucsschool-veyon-proxy=1.1
Upgradable: 

ucr get server/role 
domaincontroller_master

tested in single+ multi-server-env

The traceback happened in the umc user module when searching für groups like schüler
-> but also in the umc groups and umc computers module with slighly different traceback (e.g. mac in the computers module)


-> this bug did not happen on my single-server

univention-app info
UCS: 4.4-8 errata1069
Installed: cups=2.2.1 samba4=4.10 squid=3.5 ucsschool=4.4 v9 ucsschool-kelvin-rest-api=1.5.1 ucsschool-veyon-proxy=1.1
Comment 1 Florian Best univentionstaff 2021-10-22 09:49:23 CEST
Interner Server-Fehler in "udm/syntax/choices (navigation)".
Request: udm/syntax/choices (navigation)

Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/notifier/threads.py", line 80, in _run
    result = self._function()
  File "/usr/lib/python3/dist-packages/notifier/__init__.py", line 105, in __call__
    return self._function(*tmp, **self._kwargs)
  File "/usr/lib/python3/dist-packages/univention/management/console/modules/udm/udm_ldap.py", line 101, in _decorated
    return method(*args, **kwargs)
  File "/usr/lib/python3/dist-packages/univention/management/console/ldap.py", line 152, in _decorated
    result = func(*args, **kwargs)
  File "/usr/lib/python3/dist-packages/univention/management/console/modules/udm/__init__.py", line 992, in _thread
    return read_syntax_choices(syntax, request.options, ldap_connection=ldap_connection, ldap_position=ldap_position)
  File "/usr/lib/python3/dist-packages/univention/management/console/modules/udm/udm_ldap.py", line 1443, in read_syntax_choices
    keys = module.search(**search_options)
  File "/usr/lib/python3/dist-packages/univention/management/console/modules/udm/udm_ldap.py", line 702, in search
    UDM_Error(e).reraise()
  File "/usr/lib/python3/dist-packages/univention/management/console/modules/udm/udm_ldap.py", line 365, in reraise
    six.reraise(self.__class__, self, self.exc_info[2])
  File "/usr/lib/python3/dist-packages/six.py", line 692, in reraise
    raise value.with_traceback(tb)
  File "/usr/lib/python3/dist-packages/univention/management/console/modules/udm/udm_ldap.py", line 671, in search
    lookup_filter = self.lookup_filter(filter, ldap_connection)
  File "/usr/lib/python3/dist-packages/univention/management/console/modules/udm/udm_ldap.py", line 446, in lookup_filter
    return getattr(self.module, 'lookup_filter')(filter_s, lo)
  File "/usr/lib/python3/dist-packages/univention/admin/handlers/__init__.py", line 1804, in lookup_filter
    filter_p.append_unmapped_filter_string(filter_s, cls.rewrite_filter, module.mapping)
  File "/usr/lib/python3/dist-packages/univention/admin/filter.py", line 124, in append_unmapped_filter_string
    walk(filter_p, rewrite_function, arg=mapping)
  File "/usr/lib/python3/dist-packages/univention/admin/filter.py", line 308, in walk
    walk(e, expression_walk_function, conjunction_walk_function, arg)
  File "/usr/lib/python3/dist-packages/univention/admin/filter.py", line 308, in walk
    walk(e, expression_walk_function, conjunction_walk_function, arg)
  File "/usr/lib/python3/dist-packages/univention/admin/filter.py", line 308, in walk
    walk(e, expression_walk_function, conjunction_walk_function, arg)
  File "/usr/lib/python3/dist-packages/univention/admin/filter.py", line 313, in walk
    expression_walk_function(filter_p, arg)
  File "/usr/lib/python3/dist-packages/univention/admin/handlers/__init__.py", line 1867, in rewrite_filter
    filter.value = mapping.mapValueDecoded(key, filter.value)
  File "/usr/lib/python3/dist-packages/univention/admin/mapping.py", line 559, in mapValueDecoded
    value = self.mapValue(map_name, value)
  File "/usr/lib/python3/dist-packages/univention/admin/mapping.py", line 555, in mapValue
    raise univention.admin.uexceptions.valueInvalidSyntax(_('Invalid encoding for %s') % (map_name,))
univention.management.console.modules.udm.udm_ldap.UDM_Error: Falsche Syntax. Ungültige Kodierung für mailAddress
Comment 2 Dirk Ahrnke univentionstaff 2021-11-17 12:20:10 CET
also noticed by participant during 2021-11 training
Comment 4 Maximilian Janßen univentionstaff 2022-02-04 12:32:59 CET
Version: 5.0-1 errata174

Error: 
Internal server error during "udm/query (groups/group)".
Request: udm/query (groups/group)

Traceback (most recent call last):
  File "%PY3%/notifier/threads.py", line 80, in _run
    result = self._function()
  File "%PY3%/notifier/__init__.py", line 105, in __call__
    return self._function(*tmp, **self._kwargs)
  File "%PY3%/univention/management/console/modules/udm/__init__.py", line 607, in _thread
    result = module.search(container, objectProperty, objectPropertyValue, superordinate, scope=scope, hidden=hidden)
  File "%PY3%/univention/management/console/modules/udm/udm_ldap.py", line 702, in search
    UDM_Error(e).reraise()
  File "%PY3%/univention/management/console/modules/udm/udm_ldap.py", line 365, in reraise
    six.reraise(self.__class__, self, self.exc_info[2])
  File "%PY3%/six.py", line 692, in reraise
    raise value.with_traceback(tb)
  File "%PY3%/univention/management/console/modules/udm/udm_ldap.py", line 685, in search
    result = self.module.lookup(None, ldap_connection, filter_s, base=container, superordinate=superordinate, scope=scope, sizelimit=sizelimit, **kwargs)
  File "%PY3%/univention/admin/handlers/__init__.py", line 1773, in lookup
    filter_s = cls.lookup_filter(filter_s, lo)
  File "%PY3%/univention/admin/handlers/__init__.py", line 1804, in lookup_filter
    filter_p.append_unmapped_filter_string(filter_s, cls.rewrite_filter, module.mapping)
  File "%PY3%/univention/admin/filter.py", line 124, in append_unmapped_filter_string
    walk(filter_p, rewrite_function, arg=mapping)
  File "%PY3%/univention/admin/filter.py", line 308, in walk
    walk(e, expression_walk_function, conjunction_walk_function, arg)
  File "%PY3%/univention/admin/filter.py", line 308, in walk
    walk(e, expression_walk_function, conjunction_walk_function, arg)
  File "%PY3%/univention/admin/filter.py", line 313, in walk
    expression_walk_function(filter_p, arg)
  File "%PY3%/univention/admin/handlers/__init__.py", line 1867, in rewrite_filter
    filter.value = mapping.mapValueDecoded(key, filter.value)
  File "%PY3%/univention/admin/mapping.py", line 559, in mapValueDecoded
    value = self.mapValue(map_name, value)
  File "%PY3%/univention/admin/mapping.py", line 555, in mapValue
    raise univention.admin.uexceptions.valueInvalidSyntax(_('Invalid encoding for %s') % (map_name,))
univention.management.console.modules.udm.udm_ldap.UDM_Error: Invalid syntax. Invalid encoding for mailAddress

Role: domaincontroller_master
Comment 5 Dirk Ahrnke univentionstaff 2022-02-16 20:06:48 CET
comparable error noticed during training 2022-02 when searching in computers for "winß".
5.0-1 errata218
Comment 6 Florian Best univentionstaff 2022-02-21 14:43:25 CET
Patch in: https://git.knut.univention.de/univention/ucs/-/merge_requests/282
Comment 7 Florian Best univentionstaff 2022-03-10 12:28:40 CET
A search for userexpiry=$date is now possible.

univention-directory-manager-modules.yaml
24c8e75bc284 | Bug #53975: Merge branch 'fbest/53975-ignore-encoding-in-ldap-filter' into 5.0-1
0e4f7029bdfb | Bug #53975: ignore decoding errors when building filter from arbitrary values

univention-directory-manager-modules (15.0.11-35)
24c8e75bc284 | Bug #53975: Merge branch 'fbest/53975-ignore-encoding-in-ldap-filter' into 5.0-1
0e4f7029bdfb | Bug #53975: ignore decoding errors when building filter from arbitrary values
Comment 8 Florian Best univentionstaff 2022-03-10 12:33:37 CET
(In reply to Florian Best from comment #7)
> A search for userexpiry=$date is now possible.
err, I meant: a search containing umlauts works again.
Comment 9 Florian Best univentionstaff 2022-03-10 14:47:06 CET
There are special cases for ipmanagedclient filter rewriting which lead me to also do the behavior in mapRewrite().

univention-directory-manager-modules (15.0.11-36)
4a504a91f948 | Bug #53975: ignore UnicodeDecodeError also in mapRewrite() used to built up LDAP filters via rewriting
Comment 10 Christian Castens univentionstaff 2022-03-10 15:33:38 CET
Functionality tested:
- created computer object named 'winß'
- searched in computers for 'winß'

OK  

code review OK
yaml, changelog OK
Comment 12 Florian Best univentionstaff 2022-03-25 10:20:23 CET
*** Bug 53695 has been marked as a duplicate of this bug. ***