>Пример converse я взял из доки к pam (/usr/share/doc/en/articles/pam/pam-sample-conv.html). Вот кусок из
>оригинала:
> resp[i]->resp = strdup(buf);
> if (resp[i]->resp == NULL)
> goto fail;
>Далее по коду примера, resp нигде не освобождается.
>А что касается коментария - его я поставил для себя, так я
Гм. Так в примере-то есть проверка значения strdup(), а у тебя она лишь в "// FIXME" превратилась. :)
>отмечаю места к которым нужно вернуться для возможного улучшения.
>В этом патче converse служит исключительно заглушкой.
По сути, почти ничего не меняет. Если *ожидается*, что код там ни разу не будет выполнен, то лучше влепить там "аварийный выход". Есть хорошее правило -- "лучше лишний стоп, чем лишний ляп". Однако, в данном случае, функция converse() вызывается, все же, верно? PAM не слишком-то простая штука, чтобы просто к ней относиться. В этом свете мнение Michael Tokarev насчет использования TCP-сервиса выглядит достаточно разумно. Я думаю, что можно было обойтись и без dict_tcp + своего "демона" -- просто использовать libradius для "dict_radius", к примеру.
"
1) написать сетевой уровень - сокеты там всякие 2) написать работу с RADIUS-сервером (не спорю, по времени это заняло бы даже меньше времени - ведь написал бы я его на любимом Perl, используя старые наработки, но это было бы менее универсально..)
"
1-е сделать правильнее проще, так документации несравнимо больше и неоднозначностей меньше... 2-е можно было бы сделать на том же C, используя libradius, которая присутствует во FreeBSD.
Конечно, цель определяет калибр, как говорится:
"Была задача сделать проверку наличия пользователя через RADIUS, что было сделано с минимальными трудозатратами."
С одной стороны PAM добавляет гибкости (с еще одним уровнем абстракции), но он служит для целей аутентификации, в принципе, а не для поиска "ЕСТЬ ЛИ ТАКОЙ LOGIN?". В твоем решении, нужно специальным образом настраивать сам RADIUS-сервер (чтобы не обращал внимания на неправильность пароля), то есть, back end, в общем случае, поэтому ценность прикручивания к "картам" postfix'а возможности "выйти на любой аутентификатор" (посредством PAM) сомнительна.
/poige
--
http://www.morning.ru/~poige/