Re: pam_listfile is *buggy* (and a replacement)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Andrew Morgan wrote:
> 
> To what extent is this module backwardly compatible with the old one?
> 
> I don't personally have any test for this module, so it would be nice to
> see some other folk try it out/report problems etc., and then
> effectively vote on it replacing the original..

I can't say this myself (not an "independant" guy :).  All the
extensions I made was mentioned in my first post.  Support for
wildcards consists of about 5 lines of code and can be easily
removed (together with negation and homedir support since them
are useless without wildcards -- another ~10 lines).

Another incompatibility may be in handling of lines in listfile --
I prefer to strip spaces from a line before comparing it with
an item.  With this, lines like " user" or "user " will match
while them wasn't matched before (first form can in principle
be used as a comment).  Also, I prefer to skip comments in
listfile (like "#user"), so if for some strange reason someone
will try to match item "#user", it will never match (without
wildcards, with them that can be written as "\#user" or
"[#]user").

Also, my variant differently handles file=some where some does
*not* start with a slash (/).  I consider this a bug in current
pam_listfile, since in that case module will try to open file
named "some" in *unknown* directory.  My variant treats this
as a direct list of values, and I personally found this very
useful.

With wildcards support, another incompatibility (also mentioned)
could be with wildcard characters (*?[\) -- I do not know if
someone have items with that characters...  Again, wildcard
support (useful for me) can be removed (see above).

Arguments also handled differently: module checks if some value
does not specified twice or more.  For example, it is legal
with current pam_listfile to have
  ... pam_listfile file=/a file=/b ...
(in this case, /a is just ignored).  With my variant, this is
an error.
Also, *parameter* errors treated as errrors, returning
PAM_SERVICE_ERR, not that was given in onerr= parameter.
Seemed to be not appropriate to return error about invalid
parameter using that parameter's value... :)

And there may be difference with logic of apply= *and* if some
information is *not* available (e.g. if user is unknown
(current variant will segfault, I'm not shure I should implement
this "feature" :), or if primary group is unknown (the same),
or if user/group in apply= is unknown, or if there is an error
getting username from pam etc).  *Only* errors handled differently,
normal logic is the same.

BTW, this is very small module.  I was surprized how one can have
so many bugs in so little module.  It have no "big logic", and both
implementations can be compared just looking to code.  Really --
10..12 Kb (mine is heavily commented) is not a strong place for a
testsuite...  I tried to follow original as carefully as I can,
where it was appropriate (minus bugs/enhancements/wrong original
logic).

Regards,
 Michael.





[Index of Archives]     [Fedora Users]     [Kernel]     [Red Hat Install]     [Linux for the blind]     [Gimp]

  Powered by Linux