Прошу обновить до версии 4.10
Вышла на днях. Сборка в процессе подготовки.
Таска посыпалась, я уже разобрался: #225325 FAILING #8 [locked] [test-only] sisyphus libtdb.git=1.3.18-alt1 libtalloc.git=2.1.16-alt1 libtevent.git=0.9.39-alt1 cmocka.git=1.1.3-alt1 libldb.git=1.5.4-alt1 samba.git=4.10.0-alt1 bind.git=9.11.6-alt2 sssd.git=2.1.0-alt1 openchange.git=2.4-alt37.zentyal23 freeipa.git=4.7.1-alt7 Мы долго тянули openchange, более он не совместим с samba-4.10 и выше. Убираем его из репозитория. С freeipa тоже всё не обошлось простой пересборкой: https://bugzilla.redhat.com/show_bug.cgi?id=1678670 https://bugzilla.redhat.com/show_bug.cgi?id=1672231 (https://bugzilla.redhat.com/show_bug.cgi?id=1673312) Добавил патчи, отправил снова. PS: В принципе, можно было бы и freeipa обновить до 4.7.2 (я сначала помёрджил, но решил не мешать всё в одну кучу).
Пересборка новой samba с текущей freeipa не проходит из-за того, что freeipa использует внутренние функции libsmbconf.so, которые более недоступны: $ girar-show 225325 ... x86_64: NEW bad_elf_symbols detected: freeipa-server-trust-ad-4.7.1-alt7.x86_64.rpm /usr/lib64/samba/pdb/ipasam.so U sid_string_dbg freeipa-server-trust-ad-4.7.1-alt7.x86_64.rpm /usr/lib64/samba/pdb/ipasam.so U sid_string_talloc aarch64: NEW bad_elf_symbols detected: freeipa-server-trust-ad-4.7.1-alt7.aarch64.rpm /usr/lib64/samba/pdb/ipasam.so U sid_string_dbg freeipa-server-trust-ad-4.7.1-alt7.aarch64.rpm /usr/lib64/samba/pdb/ipasam.so U sid_string_talloc 2019-Mar-26 22:32:38 :: [x86_64 i586 aarch64] ELF symbols check FAILED 2019-Mar-26 22:32:38 :: task #225325 for sisyphus FAILED Об этом явно указано в соответствующем файле freeipa/daemons/ipa-sam/ipa_sam.c: ... char *sid_string_talloc(TALLOC_CTX *mem_ctx, const struct dom_sid *sid); /* available in libsmbconf.so */ char *sid_string_dbg(const struct dom_sid *sid); /* available in libsmbconf.so */ ... В samba-4.10.0 функции sid_string_talloc и sid_string_dbg обобщены и заменены на функцию dom_sid_str_buf: @@ -423,12 +425,12 @@ static NTSTATUS log_nt_token(struct security_token *token) for (i=1; i<token->num_sids; i++) { group_sidstr = talloc_asprintf( frame, "%s %s", group_sidstr, - sid_string_talloc(frame, &token->sids[i])); + dom_sid_str_buf(&token->sids[i], &buf)); } command = talloc_string_sub( frame, lp_log_nt_token_command(frame), - "%s", sid_string_talloc(frame, &token->sids[0])); + "%s", dom_sid_str_buf(&token->sids[0], &buf)); command = talloc_string_sub(frame, command, "%t", group_sidstr); if (command == NULL) { @@ -605,9 +607,10 @@ NTSTATUS create_local_token(TALLOC_CTX *mem_ctx, if (ids[i].type != ID_TYPE_GID && ids[i].type != ID_TYPE_BOTH) { + struct dom_sid_buf buf; DEBUG(10, ("Could not convert SID %s to gid, " "ignoring it\n", - sid_string_dbg(&t->sids[i]))); + dom_sid_str_buf(&t->sids[i], &buf))); continue; } if (!add_gid_to_array_unique(session_info->unix_token, При этом новая функция находится теперь в библиотеке /usr/lib64/samba/libsamba-security-samba4.so: @@ -488,3 +505,13 @@ char *dom_sid_string(TALLOC_CTX *mem_ctx, const struct dom_sid *sid) talloc_set_name_const(result, result); return result; } + +char *dom_sid_str_buf(const struct dom_sid *sid, struct dom_sid_buf *dst) +{ + int ret; + ret = dom_sid_string_buf(sid, dst->buf, sizeof(dst->buf)); + if ((ret < 0) || (ret >= sizeof(dst->buf))) { + strlcpy(dst->buf, "(INVALID SID)", sizeof(dst->buf)); + } + return dst->buf; +} diff --git a/libcli/security/dom_sid.h b/libcli/security/dom_sid.h index 491fc0699f4..abaf305f96a 100644 --- a/libcli/security/dom_sid.h +++ b/libcli/security/dom_sid.h @@ -100,9 +100,10 @@ bool dom_sid_in_domain(const struct dom_sid *domain_sid, bool dom_sid_is_valid_account_domain(const struct dom_sid *sid); #define DOM_SID_STR_BUFLEN (15*11+25) -int dom_sid_string_buf(const struct dom_sid *sid, char *buf, int buflen); char *dom_sid_string(TALLOC_CTX *mem_ctx, const struct dom_sid *sid); +struct dom_sid_buf { char buf[DOM_SID_STR_BUFLEN]; }; +char *dom_sid_str_buf(const struct dom_sid *sid, struct dom_sid_buf *dst); const char *sid_type_lookup(uint32_t sid_type); const struct security_token *get_system_token(void); И более недоступна. В общем, пока непонятно как это собирали в федоре. Планирую бекпортировать изменения из новой samba во freeipa.
Хотя у меня есть одно подозрение. Возможно в федоре не проверяется, как у нас? бинарная консистентность и у них просто лежит не рабочий freeipa-server-trust-ad. Сборка-то проходит успешно. Не отрабатывают наши тесты - NEW bad_elf_symbols detected.
ab@ может знать.
Подготовил патч, повесил багу: https://pagure.io/freeipa/issue/7893
Отправил запрос на git pull: https://github.com/freeipa/freeipa/pull/2943
Что скажет мейнтейнер freeipa?0
1) В апстриме высказались уже насчет патча (предложен более лучший вариант) 2) апстримные CI тесты не проходят: https://travis-ci.org/freeipa/freeipa/jobs/512283738 """ ipa_sam.c: In function ‘_domain_sid_string_buf’: ipa_sam.c:297:10: error: implicit declaration of function ‘strlcpy’; did you mean ‘strncpy’? [-Werror=implicit-function-declaration] return strlcpy(buf, "(NULL SID)", buflen); ^~~~~~~ strncpy cc1: some warnings being treated as errors """
(In reply to comment #9) > 1) В апстриме высказались уже насчет патча (предложен более лучший вариант) Более лучший, не исключает рабочего. Тем более, что ab@, пока не предложил более лучший вариант, изъявлял готовность принять текущий. Кроме того, я сделал именно так, как он сам советовал в личной переписке. В общем, развивать в апстриме более лучший вариант мы будем и так. Сейчас нас держит, что нет рабочего. > 2) апстримные CI тесты не проходят: > https://travis-ci.org/freeipa/freeipa/jobs/512283738 На этот счёт поправку внёс - тесты апстрима перезапущены. А между тем у нас появилась рабочая сборка: #225325 TESTED #11 [test-only] sisyphus libtdb.git=1.3.18-alt1 libtalloc.git=2.1.16-alt1 libtevent.git=0.9.39-alt1 cmocka.git=1.1.3-alt1 libldb.git=1.5.4-alt1 samba.git=4.10.0-alt1 sssd.git=2.1.0-alt1 del=openchange freeipa.git=4.7.1-alt7
Предлагаю отправить текущий вариант в сизиф, потому более красивый вариант можно дожидаться ещё долго, я не уверен, что в этом есть смысл. Патч я поправил, как просил апстрим.
(In reply to comment #11) > Предлагаю отправить текущий вариант в сизиф, потому более красивый вариант > можно дожидаться ещё долго, я не уверен, что в этом есть смысл. Патч я > поправил, как просил апстрим. Как апстрим просил изначально, а не в лучшем варианте, потому что там управление памятью затрагивается и возможны утечки. Отладить это быстро просто так я уже не смогу.
(В ответ на комментарий №12) > (In reply to comment #11) > > Предлагаю отправить текущий вариант в сизиф, потому более красивый вариант > > можно дожидаться ещё долго, я не уверен, что в этом есть смысл. Патч я > > поправил, как просил апстрим. > > Как апстрим просил изначально, а не в лучшем варианте, потому что там > управление памятью затрагивается и возможны утечки. Отладить это быстро просто > так я уже не смогу. Да, поддерживаю предложение. Главное (для меня) - информировать апстрим, они в любом случае сделают лучше.
(В ответ на комментарий №13) > (В ответ на комментарий №12) > > (In reply to comment #11) > > > Предлагаю отправить текущий вариант в сизиф, потому более красивый вариант > > > можно дожидаться ещё долго, я не уверен, что в этом есть смысл. Патч я > > > поправил, как просил апстрим. > > > > Как апстрим просил изначально, а не в лучшем варианте, потому что там > > управление памятью затрагивается и возможны утечки. Отладить это быстро просто > > так я уже не смогу. > > Да, поддерживаю предложение. Ok. Тогда отправляем, но отслеживания изменения в апстрим регулярно.
(В ответ на комментарий №4) > Хотя у меня есть одно подозрение. Возможно в федоре не проверяется, как у нас? > бинарная консистентность и у них просто лежит не рабочий > freeipa-server-trust-ad. Сборка-то проходит успешно. Не отрабатывают наши тесты > - NEW bad_elf_symbols detected. Нет, дело не в этом. В Федоре еще не было 4.10 до вчерашнего дня.
Разница появилась между RC3 и релизом. https://taskotron.fedoraproject.org/artifacts/all/94d16f02-4b42-11e9-b891-525400fc9f92/tests.yml/samba-4.10.0-5.fc30.log
Я перенёс исправление из апстрима в новую сборку freeipa: #226422 TESTED #1 [test-only] sisyphus freeipa.git=4.7.2-alt1 Я готов её отправить в сизиф, но поскольку не тестирую пока этот пакет на стендах, предлагаю к рассмотрению. Поскольку новая samba уже в сизифе, эту задачу считаю разрешённой.
Спасибо!
Отдельное спасибо Александру за оперативное исправление в апстриме!