Bug 36331 - Обновление samba
Summary: Обновление samba
Status: CLOSED FIXED
Alias: None
Product: Sisyphus
Classification: Development
Component: samba (show other bugs)
Version: unstable
Hardware: all Linux
: P3 normal
Assignee: Evgeny Sinelnikov
QA Contact: qa-sisyphus
URL:
Keywords:
Depends on: 36429
Blocks:
  Show dependency tree
 
Reported: 2019-03-21 12:57 MSK by AEN
Modified: 2019-04-02 23:30 MSK (History)
6 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description AEN 2019-03-21 12:57:58 MSK
Прошу обновить до версии 4.10
Comment 1 Evgeny Sinelnikov 2019-03-21 13:08:27 MSK
Вышла на днях. Сборка в процессе подготовки.
Comment 2 Evgeny Sinelnikov 2019-03-26 21:56:09 MSK
Таска посыпалась, я уже разобрался:
#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 (я сначала помёрджил, но решил не мешать всё в одну кучу).
Comment 3 Evgeny Sinelnikov 2019-03-27 16:25:01 MSK
Пересборка новой 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.
Comment 4 Evgeny Sinelnikov 2019-03-27 16:28:18 MSK
Хотя у меня есть одно подозрение. Возможно в федоре не проверяется, как у нас? бинарная консистентность и у них просто лежит не рабочий freeipa-server-trust-ad. Сборка-то проходит успешно. Не отрабатывают наши тесты - NEW bad_elf_symbols detected.
Comment 5 AEN 2019-03-27 16:35:20 MSK
ab@ может знать.
Comment 6 Evgeny Sinelnikov 2019-03-27 22:05:21 MSK
Подготовил патч, повесил багу:
https://pagure.io/freeipa/issue/7893
Comment 7 Evgeny Sinelnikov 2019-03-27 23:00:23 MSK
Отправил запрос на git pull:
https://github.com/freeipa/freeipa/pull/2943
Comment 8 AEN 2019-03-27 23:09:09 MSK
Что скажет мейнтейнер freeipa?0
Comment 9 Stanislav Levin 2019-03-28 09:43:42 MSK
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
"""
Comment 10 Evgeny Sinelnikov 2019-03-28 12:52:08 MSK
(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
Comment 11 Evgeny Sinelnikov 2019-03-29 00:29:02 MSK
Предлагаю отправить текущий вариант в сизиф, потому более красивый вариант можно дожидаться ещё долго, я не уверен, что в этом есть смысл. Патч я поправил, как просил апстрим.
Comment 12 Evgeny Sinelnikov 2019-03-29 00:31:31 MSK
(In reply to comment #11)
> Предлагаю отправить текущий вариант в сизиф, потому более красивый вариант
> можно дожидаться ещё долго, я не уверен, что в этом есть смысл. Патч я
> поправил, как просил апстрим.

Как апстрим просил изначально, а не в лучшем варианте, потому что там управление памятью затрагивается и возможны утечки. Отладить это быстро просто так я уже не смогу.
Comment 13 Stanislav Levin 2019-03-29 09:24:44 MSK
(В ответ на комментарий №12)
> (In reply to comment #11)
> > Предлагаю отправить текущий вариант в сизиф, потому более красивый вариант
> > можно дожидаться ещё долго, я не уверен, что в этом есть смысл. Патч я
> > поправил, как просил апстрим.
> 
> Как апстрим просил изначально, а не в лучшем варианте, потому что там
> управление памятью затрагивается и возможны утечки. Отладить это быстро просто
> так я уже не смогу.

Да, поддерживаю предложение. Главное (для меня) - информировать апстрим, они в любом случае сделают лучше.
Comment 14 AEN 2019-03-29 12:19:08 MSK
(В ответ на комментарий №13)
> (В ответ на комментарий №12)
> > (In reply to comment #11)
> > > Предлагаю отправить текущий вариант в сизиф, потому более красивый вариант
> > > можно дожидаться ещё долго, я не уверен, что в этом есть смысл. Патч я
> > > поправил, как просил апстрим.
> > 
> > Как апстрим просил изначально, а не в лучшем варианте, потому что там
> > управление памятью затрагивается и возможны утечки. Отладить это быстро просто
> > так я уже не смогу.
> 
> Да, поддерживаю предложение. 
Ok. Тогда отправляем, но отслеживания изменения в апстрим регулярно.
Comment 15 Alexander Bokovoy 2019-03-30 14:24:52 MSK
(В ответ на комментарий №4)
> Хотя у меня есть одно подозрение. Возможно в федоре не проверяется, как у нас?
> бинарная консистентность и у них просто лежит не рабочий
> freeipa-server-trust-ad. Сборка-то проходит успешно. Не отрабатывают наши тесты
> - NEW bad_elf_symbols detected.

Нет, дело не в этом. В Федоре еще не было 4.10 до вчерашнего дня.
Comment 16 Alexander Bokovoy 2019-03-30 14:32:01 MSK
Разница появилась между RC3 и релизом.
https://taskotron.fedoraproject.org/artifacts/all/94d16f02-4b42-11e9-b891-525400fc9f92/tests.yml/samba-4.10.0-5.fc30.log
Comment 17 Evgeny Sinelnikov 2019-04-02 23:00:01 MSK
Я перенёс исправление из апстрима в новую сборку freeipa:
#226422 TESTED #1 [test-only] sisyphus freeipa.git=4.7.2-alt1

Я готов её отправить в сизиф, но поскольку не тестирую пока этот пакет на стендах, предлагаю к рассмотрению.

Поскольку новая samba уже в сизифе, эту задачу считаю разрешённой.
Comment 18 AEN 2019-04-02 23:13:43 MSK
Спасибо!
Comment 19 Stanislav Levin 2019-04-02 23:30:38 MSK
Отдельное спасибо Александру за оперативное исправление в апстриме!