Bug 40144 - search_ext_s() возвращает больше, чем указано в sizelimit=1
Summary: search_ext_s() возвращает больше, чем указано в sizelimit=1
Status: NEW
Alias: None
Product: Sisyphus
Classification: Development
Component: samba-dc (show other bugs)
Version: unstable
Hardware: x86_64 Linux
: P5 normal
Assignee: Evgeny Sinelnikov
QA Contact: qa-sisyphus
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2021-06-02 19:57 MSK by Andrey Cherepanov
Modified: 2021-06-04 12:49 MSK (History)
20 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Andrey Cherepanov 2021-06-02 19:57:57 MSK
# python3
Python 3.8.6 (default, Oct  2 2020, 00:06:33) 
[GCC 9.3.1 20200518 (ALT Sisyphus 9.3.1-alt1)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import ldap
>>> con = ldap.initialize('ldaps://10.4.4.163',0)>>> con.bind(who='CN=ivanov,CN=Users,DC=company,DC=localnet',cred='Pa$$word')1
>>> len(con.search_ext_s(base='cn=Users,dc=company,dc=localnet',scope=ldap.SCOPE_SUBTREE, filterstr='(objectClass=posixAccount)',sizelimit=1))
2

В документации (https://www.python-ldap.org/en/python-ldap-3.3.0/reference/ldap.html#):
The amount of search results retrieved can be limited with the sizelimit parameter when using search_ext() or search_ext_s() (client-side search limit). If non-zero not more than sizelimit results are returned by the server.
Comment 1 Andrey Cherepanov 2021-06-02 20:12:10 MSK
LDAPTLS_REQCERT=never python3
...
import ldap
con = ldap.initialize('ldaps://10.4.4.163',0)
con.bind(who='CN=ivanov,CN=Users,DC=company,DC=localnet',cred='Pa$$word')
len(con.search_ext_s(base='cn=Users,dc=company,dc=localnet',scope=ldap.SCOPE_SUBTREE, filterstr='(objectClass=posixAccount)',sizelimit=1))

Актуально и в p9.
Comment 2 Stanislav Levin 2021-06-02 20:42:00 MSK
Какой используется backend(LDAP сервер)?
Comment 3 Stanislav Levin 2021-06-02 21:30:22 MSK
Проверил на 389-ds.
Корректно генерируется исключение ldap.SIZELIMIT_EXCEEDED при превышении sizelimit.

search_ext_s - это обертка над ldap_search_ext из OpenLDAP.
Comment 4 Andrey Cherepanov 2021-06-03 06:30:02 MSK
(Ответ для Stanislav Levin на комментарий #2)
> Какой используется backend(LDAP сервер)?

samba-dc.
Comment 5 Andrey Cherepanov 2021-06-03 08:48:27 MSK
Подтверждаю, что прилетает исключение. Что скажет Евгений Синельников?
Comment 6 Evgeny Sinelnikov 2021-06-03 12:48:20 MSK
(Ответ для Andrey Cherepanov на комментарий #5)
> Подтверждаю, что прилетает исключение. Что скажет Евгений Синельников?

Надо посмотреть. Буду проверять. О результатах отпишусь.
Comment 7 Evgeny Sinelnikov 2021-06-03 13:05:36 MSK
Ну, мы не одиноки:
- https://lists.samba.org/archive/samba/2018-February/213970.html
"I can't find any code enforcing a size limit in Samba's LDAP server."

Samba такая Samba. Будем патчить? ;)
Comment 8 Andrey Cherepanov 2021-06-03 20:35:56 MSK
(Ответ для Evgeny Sinelnikov на комментарий #7)
> Ну, мы не одиноки:
> - https://lists.samba.org/archive/samba/2018-February/213970.html
> "I can't find any code enforcing a size limit in Samba's LDAP server."
> 
> Samba такая Samba. Будем патчить? ;)

Было бы неплохо. И апстриму поможем.
Comment 9 Andrey Cherepanov 2021-06-04 12:49:44 MSK
На samba-dc