Bug 38389 - pam: can't login, pam_motd failed
Summary: pam: can't login, pam_motd failed
Status: CLOSED FIXED
Alias: None
Product: Sisyphus
Classification: Development
Component: pam (show other bugs)
Version: unstable
Hardware: x86_64 Linux
: P5 normal
Assignee: Dmitry V. Levin
QA Contact: qa-sisyphus
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2020-04-26 07:22 MSK by Yuri N. Sedunov
Modified: 2020-04-26 22:51 MSK (History)
8 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Yuri N. Sedunov 2020-04-26 07:22:19 MSK
pam-1.3.1.0.212.76916-alt1

login[4196]: pam_motd(login:session): pam_motd: failed to allocate dirname array
Comment 1 Dmitry V. Levin 2020-04-26 14:03:18 MSK
у pam_motd есть какие-нибудь аргументы?
Comment 2 Yuri N. Sedunov 2020-04-26 14:10:44 MSK
$ rpm -qf /etc/pam.d/login 
login-0.60-alt35.x86_64
$ sudo grep pam_motd /etc/pam.d/login 
session		optional	pam_motd.so
Comment 3 Dmitry V. Levin 2020-04-26 14:24:57 MSK
Понятно, ждите фикс.
Comment 4 Dmitry V. Levin 2020-04-26 14:36:23 MSK
(In reply to Yuri N. Sedunov from comment #0)
> pam-1.3.1.0.212.76916-alt1
> 
> login[4196]: pam_motd(login:session): pam_motd: failed to allocate dirname
> array

Эта ошибка не влияет на код завершения pam_motd.
Какие-нибудь ещё ошибки были?
Comment 5 Yuri N. Sedunov 2020-04-26 14:54:02 MSK
Это всё, что есть в журнале про неудачный логин:

$ C sudo journalctl -b |grep "login\[4196\]"
login[4196]: pam_tcb(login:auth): Authentication passed for aris from (uid=0)
login[4196]: pam_tcb(login:session): Session opened for aris by (uid=0)
login[4196]: pam_motd(login:session): pam_motd: failed to allocate dirname array
Comment 6 Dmitry V. Levin 2020-04-26 15:06:45 MSK
Если убрать pam_motd из стека, логин исправляется?
Comment 7 Yuri N. Sedunov 2020-04-26 15:23:02 MSK
(Ответ для Dmitry V. Levin на комментарий #6)
> Если убрать pam_motd из стека, логин исправляется?

Да, конечно.
Comment 8 Dmitry V. Levin 2020-04-26 15:39:26 MSK
(In reply to Yuri N. Sedunov from comment #7)
> (Ответ для Dmitry V. Levin на комментарий #6)
> > Если убрать pam_motd из стека, логин исправляется?
> 
> Да, конечно.

Несмотря на то, что pam_motd вернул PAM_IGNORE?
Comment 9 Aleksey Borisenkov 2020-04-26 17:22:58 MSK
Лично у меня всё заканчивается сегфолтом

login[818262]: pam_motd(login:session): pam_motd: failed to allocate dirname array
kernel: login[818262]: segfault at 0 ip 00007f4fd766f870 sp 00007ffe0b896500 error 4 in pam_motd.so[7f4fd766f000+1000]

login[818444]: pam_motd(login:session): pam_motd: failed to allocate dirname array
kernel: login[818444]: segfault at 0 ip 00007fd40a66c870 sp 00007fff660eb2a0 error 4 in pam_motd.so[7fd40a66c000+1000]

login[845728]: pam_motd(login:session): pam_motd: failed to allocate dirname array
kernel: login[845728]: segfault at 0 ip 00007f96ffd64870 sp 00007fff70507200 error 4 in pam_motd.so[7f96ffd64000+1000]

И да, если pam_motd закомментировать, то логин проходит нормально, при возврате снова сегфолт.
Comment 10 Dmitry V. Levin 2020-04-26 17:51:54 MSK
(In reply to Aleksey Borisenkov from comment #9)
> Лично у меня всё заканчивается сегфолтом
> 
> login[818262]: pam_motd(login:session): pam_motd: failed to allocate dirname
> array
> kernel: login[818262]: segfault at 0 ip 00007f4fd766f870 sp 00007ffe0b896500
> error 4 in pam_motd.so[7f4fd766f000+1000]

Да, это ожидаемо, я видел это в коде, непонятно, почему никто до вас не видел этой ошибки в логе.

> И да, если pam_motd закомментировать, то логин проходит нормально, при
> возврате снова сегфолт.

Спасибо, теперь всё встало на свои места.
Comment 11 Dmitry V. Levin 2020-04-26 18:16:55 MSK
Давайте сверим часы.  Мой прогноз:

Если сделать mkdir -p /etc/motd.d /run/motd.d /usr/lib/motd.d
то сегфолт прекратится, login починится, но жалоба "failed to allocate dirname array" останется.

Если сделать rmdir /etc/motd.d /run/motd.d /usr/lib/motd.d; mkdir -p /run/motd.d; touch /run/motd.d/foo
то сегфолт вернётся, login сломается, но жалоба "failed to allocate dirname array" уйдёт.
Comment 12 Антон Мидюков 2020-04-26 19:48:03 MSK
(Ответ для Dmitry V. Levin на комментарий #11)
> Давайте сверим часы.  Мой прогноз:
> 
> Если сделать mkdir -p /etc/motd.d /run/motd.d /usr/lib/motd.d
> то сегфолт прекратится, login починится, но жалоба "failed to allocate
> dirname array" останется.
> 

Починился, жалобы на "failed to allocate dirname array" нет, как и на сегфолт.

> Если сделать rmdir /etc/motd.d /run/motd.d /usr/lib/motd.d; mkdir -p
> /run/motd.d; touch /run/motd.d/foo
> то сегфолт вернётся, login сломается, но жалоба "failed to allocate dirname
> array" уйдёт.

Не починился, жалоба на "failed to allocate dirname array" и сегфолт есть.
Comment 13 Aleksey Borisenkov 2020-04-26 20:06:52 MSK
Аналогично, чинятся вместе и ломаются вместе, вопреки прогнозу.
Comment 14 Dmitry V. Levin 2020-04-26 20:17:02 MSK
(In reply to Aleksey Borisenkov from comment #13)
> Аналогично, чинятся вместе и ломаются вместе, вопреки прогнозу.

OK, поскольку calloc(0, 1) != NULL, так и должно быть.
Всем спасибо за тестирование.
Comment 15 Repository Robot 2020-04-26 22:51:14 MSK
linux-pam-1.3.1.0.223.c2c0-alt1 -> sisyphus:

 Sun Apr 26 2020 Dmitry V. Levin <ldv@altlinux> 1.3.1.0.223.c2c0-alt1
 - v1.3.1-212-g76916913 -> v1.3.1-223-gc2c0434b (closes: #38389).