Bug 24888

Summary: broke with perl-5.12
Product: Sisyphus Reporter: Michael Shigorin <mike>
Component: smbldap-toolsAssignee: Michael Shigorin <mike>
Status: CLOSED FIXED QA Contact: qa-sisyphus
Severity: normal    
Priority: P3 CC: crux, mike
Version: unstable   
Hardware: all   
OS: Linux   
Bug Depends on: 9913    
Bug Blocks:    

Description Michael Shigorin 2011-01-10 20:15:01 MSK
Сломалось с perl-base-5.12.2-alt02 как минимум:

--- 0.9.5-alt2
# /usr/sbin/smbldap-migrate-unix-accounts -v -P ~/passwd 2>&1 | head -n 40
Use of uninitialized value $typeuser in hash element at /usr/sbin/smbldap-migrate-unix-accounts line 255, <$INFILE> line 1.
Use of uninitialized value within @_ in list assignment at /usr/share/perl5/Net/LDAP.pm line 50, <$INFILE> line 1.
Use of uninitialized value $typeuser in hash element at /usr/sbin/smbldap-migrate-unix-accounts line 262, <$INFILE> line 1.
Use of uninitialized value in concatenation (.) or string at /usr/sbin/smbldap-migrate-unix-accounts line 262, <$INFILE> line 1.
------------------------------------------------------------------------
dn:uid=username,
[...]
---

(последняя строчка, которая уже кусок LDIF'а, обрывается именно на запятой)

--- 0.9.6-alt1 (с патчем от 0.9.5-alt2, лёг нормально):
# /usr/sbin/smbldap-migrate-unix-accounts -v -u -P ~/passwd 2>&1 | head -n 40
Use of uninitialized value $typeuser in hash element at /usr/sbin/smbldap-migrate-unix-accounts line 257, <$INFILE> line 1.
Use of uninitialized value within @_ in list assignment at /usr/share/perl5/Net/LDAP.pm line 50, <$INFILE> line 1.
Use of uninitialized value $typeuser in hash element at /usr/sbin/smbldap-migrate-unix-accounts line 264, <$INFILE> line 1.
Use of uninitialized value in concatenation (.) or string at /usr/sbin/smbldap-migrate-unix-accounts line 264, <$INFILE> line 1.
------------------------------------------------------------------------
dn:uid=username,
[...]
---

Если патч оторвать, то 0.9.6 с текущим перлом работает.  Предлагаю оторвать до того, как кто-нить доберётся починить (возможно, перл поумнел и переоптимизировал что-то с этим undef'ом добавленным).
Comment 1 Repository Robot 2011-01-11 22:07:57 MSK
smbldap-tools-0.9.6-alt2 -> sisyphus:

* Mon Jan 10 2011 Michael Shigorin <mike@altlinux> 0.9.6-alt2
- drop patch, breaks with perl-5.12 at the very least (closes: #24888)

* Mon Jan 10 2011 Michael Shigorin <mike@altlinux> 0.9.6-alt1
- 0.9.6
Comment 2 Vladimir Lettiev 2011-01-12 11:28:08 MSK
патч кривоват, при использовании любой из опций -P -S -M может привести к некорректным результатам.

Ошибка в том, что функция get_user_entry() использует переменную $typeuser, значение которой определяется _позже_ вызова этой функции. Т.о. при обработке первой строчки данных используется пустое значение (отсюда warning'и), а каждая следующая строчка использует значение $typeuser вычисленное для предыдущей строки, что может дать, мягко говоря, совершенно неверные результаты.