xref: /freebsd/contrib/openpam/HISTORY (revision 45538173c120eadca115fd7e56c657905bf73771)
1OpenPAM Zingiber						2025-05-31
2
3 - BUGFIX: In openpam_borrow_cred(3), the wrong debugging macro was
4   being used, which resulted in an attempt to interpret the target
5   UID as an item identifier.
6
7 - ENHANCE: Allow missing modules or subpolicies to be ignored.
8
9 - ENHANCE: Previously, OpenPAM was hardcoded to look for policies in
10   /usr/local/etc in addition to /etc and modules in /usr/local/lib in
11   addition to /usr/lib.  This is now configurable at compile time.
12============================================================================
13OpenPAM Ximenia							2023-06-27
14
15 - BUGFIX: Fix race condition in openpam_ttyconv(3) when used with
16   expect scripts.
17
18 - BUGFIX: In openpam_set_option(3), when removing an option, properly
19   decrement the option count.
20
21 - BUGFIX: In openpam_subst(3), avoid incrementing past the end of the
22   template.
23============================================================================
24OpenPAM Tabebuia						2019-02-24
25
26 - BUGFIX: Fix off-by-one bug in pam_getenv(3) which was introduced in
27   OpenPAM Radula.
28
29 - ENHANCE: Add unit tests for pam_{get,put,set}env(3).
30============================================================================
31OpenPAM Resedacea						2017-04-30
32
33 - BUGFIX: Reinstore the NULL check in pam_end(3) which was removed in
34   OpenPAM Radula, as it breaks common error-handling constructs.
35
36 - BUGFIX: Return PAM_SYMBOL_ERR instead of PAM_SYSTEM_ERR from the
37   dispatcher when the required service function could not be found.
38
39 - ENHANCE: Introduce the PAM_BAD_HANDLE error code for when pamh is
40   NULL in API functions that have a NULL check.
41
42 - ENHANCE: Introduce the PAM_BAD_ITEM, PAM_BAD_FEATURE and
43   PAM_BAD_CONSTANT error codes for situations where we previously
44   incorrectly used PAM_SYMBOL_ERR to denote that an invalid constant
45   had been passed to an API function.
46
47 - ENHANCE: Improve the RETURN VALUES section in API man pages,
48   especially for functions that cannot fail, which were incorrectly
49   documented as returning -1 on failure.
50============================================================================
51OpenPAM Radula							2017-02-19
52
53 - BUGFIX: Fix an inverted test which prevented pam_get_authtok(3) and
54   pam_get_user(3) from using application-provided custom prompts.
55
56 - BUGFIX: Plug a memory leak in pam_set_item(3).
57
58 - BUGFIX: Plug a potential memory leak in openpam_readlinev(3).
59
60 - BUGFIX: In openpam_readword(3), support line continuations within
61   whitespace.
62
63 - ENHANCE: Add a feature flag to control fallback to "other" policy.
64
65 - ENHANCE: Add a pam_return(8) module which returns an arbitrary
66   code specified in the module options.
67
68 - ENHANCE: More and better unit tests.
69============================================================================
70OpenPAM Ourouparia						2014-09-12
71
72 - ENHANCE: When executing a chain, require at least one service
73   function to succeed.  This mitigates fail-open scenarios caused by
74   misconfigurations or missing modules.
75
76 - ENHANCE: Make sure to overwrite buffers which may have contained an
77   authentication token when they're no longer needed.
78
79 - BUGFIX: Under certain circumstances, specifying a non-existent
80   module (or misspelling the name of a module) in a policy could
81   result in a fail-open scenario.  (CVE-2014-3879)
82
83 - FEATURE: Add a search path for modules.  This was implemented in
84   Nummularia but inadvertently left out of the release notes.
85
86 - BUGFIX: The is_upper() predicate only accepted the letter A as an
87   upper-case character instead of the entire A-Z range.  As a result,
88   service and module names containing upper-case letters other than A
89   would be rejected.
90============================================================================
91OpenPAM Nummularia						2013-09-07
92
93 - ENHANCE: Rewrite the dynamic loader to improve readability and
94   reliability.  Modules can now be listed without the ".so" suffix in
95   the policy file; OpenPAM will automatically add it, just like it
96   will automatically add the version number if required.
97
98 - ENHANCE: Allow openpam_straddch(3) to be called without a character
99   so it can be used to preallocate a string.
100
101 - ENHANCE: Improve portability by adding simple asprintf(3) and
102   vasprintf(3) implementations for platforms that don't have them.
103
104 - ENHANCE: Move the libpam sources into a separate subdirectory.
105
106 - ENHANCE: Substantial documentation improvements.
107
108 - BUGFIX: When openpam_readword(3) encountered an opening quote, it
109   would set the first byte in the buffer to '\0', discarding all
110   existing text and, unless the buffer was empty to begin with, all
111   subsequent text as well.  This went unnoticed because none of the
112   unit tests for quoted strings had any text preceding the opening
113   quote.
114
115 - BUGFIX: make --with-modules-dir work the way it was meant to work
116   (but never did).
117============================================================================
118OpenPAM Micrampelis						2012-05-26
119
120 - FEATURE: Add an openpam_readword(3) function which reads the next
121   word from an input stream, applying shell quoting and escaping
122   rules.  Add numerous unit tests for openpam_readword(3).
123
124 - FEATURE: Add an openpam_readlinev(3) function which uses the
125   openpam_readword(3) function to read words from an input stream one
126   at a time until it reaches an unquoted, unescaped newline, and
127   returns an array of those words.  Add several unit tests for
128   openpam_readlinev(3).
129
130 - FEATURE: Add a PAM_HOST item which pam_start(3) initializes to the
131   machine's hostname.  This was implemented in Lycopsida but
132   inadvertantly left out of the release notes.
133
134 - FEATURE: In pam_get_authtok(3), if neither the application nor the
135   module have specified a prompt and PAM_HOST and PAM_RHOST are both
136   defined but not equal, use a different default prompt that includes
137   PAM_USER and PAM_HOST.
138
139 - ENHANCE: Rewrite the policy parser to used openpam_readlinev(),
140   which greatly simplifies the code.
141
142 - ENHANCE: The previous implementation of the policy parser relied on
143   the openpam_readline(3) function, which (by design) munges
144   whitespace and understands neither quotes nor backslash escapes.
145   As a result of the aforementioned rewrite, whitespace, quotes and
146   backslash escapes in policy files are now handled in a consistent
147   and predictable manner.
148
149 - ENHANCE: On platforms that have it, use fdlopen(3) to load modules.
150   This closes the race between the ownership / permission check and
151   the dlopen(3) call.
152
153 - ENHANCE: Reduce the amount of pointless error messages generated
154   while searching for a module.
155
156 - ENHANCE: Numerous documentation improvements, both in content and
157   formatting.
158
159 - BUGFIX: A patch incorporated in Lycopsida inadvertantly changed
160   OpenPAM's behavior when several policies exist for the same
161   service, from ignoring all but the first to concatenating them all.
162   Revert to the original behavior.
163
164 - BUGFIX: Plug a memory leak in the policy parser.
165============================================================================
166OpenPAM Lycopsida						2011-12-18
167
168 - ENHANCE: removed static build autodetection, which didn't work
169   anyway.  Use an explicit, user-specified preprocessor variable
170   instead.
171
172 - ENHANCE: cleaned up the documentation a bit.
173
174 - ENHANCE: added openpam_subst(3), allowing certain PAM items to be
175   embedded in strings such as prompts.  Apply it to the prompts used
176   by pam_get_user(3) and pam_get_authtok(3).
177
178 - ENHANCE: added support for the user_prompt, authtok_prompt and
179   oldauthtok_prompt module options, which override the prompts passed
180   by the module to pam_set_user(3) and pam_get_authtok(3).
181
182 - ENHANCE: rewrote the policy parser to support quoted option values.
183
184 - ENHANCE: added pamtest(1), a tool for testing modules and policies.
185
186 - ENHANCE: added code to check the ownership and permissions of a
187   module before loading it.
188
189 - ENHANCE: added / improved input validation in many cases, including
190   the policy file and some function arguments.  (CVE-2011-4122)
191============================================================================
192OpenPAM Hydrangea						2007-12-21
193
194 - ENHANCE: when compiling with GCC, mark up API functions with GCC
195   attributes where appropriate.
196
197 - BUGFIX: fixed numerous warnings uncovered by GCC 4.
198
199 - ENHANCE: building the documentation is now optional.
200
201 - ENHANCE: corrected a number of mistakes and style issues in the
202   build system.
203
204 - ENHANCE: API function arguments are now const where appropriate, to
205   match corresponding changes in the Solaris PAM and Linux-PAM APIs.
206
207 - ENHANCE: corrected a number of C namespace violations.
208
209 - ENHANCE: the module cache has been removed, allowing long-lived
210   applications to pick up module changes.  This also allows multiple
211   threads to use PAM simultaneously (as long as they use separate PAM
212   contexts), since the module cache was the only part of OpenPAM that
213   was not thread-safe.
214============================================================================
215OpenPAM Figwort							2005-06-16
216
217 - BUGFIX: Correct several small signedness and initialization bugs
218   discovered during review by the NetBSD team.
219
220 - BUGFIX: Modify gendoc.pl to sort cross-references in dictionary
221   order within each section.
222
223 - ENHANCE: if a policy specifies a relative module path, prepend the
224   module directory so we never call dlopen(3) with a relative path.
225
226 - ENHANCE: add a pam.conf(5) manual page.
227============================================================================
228OpenPAM Feterita						2005-02-01
229
230 - BUGFIX: Correct numerous markup errors, invalid cross-references,
231   and other issues in the manual pages, with kind assistance from
232   Ruslan Ermilov <ru@freebsd.org>.
233
234 - BUGFIX: Avoid multiple evaluation of macro arguments in ENTERX()
235   and RETURNX() macros.
236
237 - BUGFIX: Remove an unnecessary and non-portable pointer cast in
238   pam_get_data(3).
239
240 - BUGFIX: Fix identical typos in PAM_ACCT_EXPIRED case in
241   pam_strerror(3) and gendoc.pl.
242
243 - ENHANCE: Minor overhaul of the autoconf / build system.
244
245 - ENHANCE: Add openpam_free_envlist(3).
246============================================================================
247OpenPAM Eelgrass						2004-02-10
248
249 - BUGFIX: Correct array handling bugs in conversation code.
250
251 - BUGFIX: In openpam_ttyconv(3), don't strip trailing linear
252   whitespace from the user's response.
253
254 - BUGFIX: Many constness issues addressed.
255============================================================================
256OpenPAM Dogwood							2003-07-15
257
258 - ENHANCE: Use the GNU autotools.
259
260 - ENHANCE: Constify the msg field in struct pam_message.
261
262 - BUGFIX: Remove left-over debugging output
263
264 - BUGFIX: Avoid side effects in arguments to the FREE() macro
265
266 - ENHANCE: Make openpam_ttyconv(3) use read(2) rather than fgets(3).
267
268 - BUGFIX: Staticize some variables which shouldn't be global.
269
270 - BUGFIX: Correcly anticipate a NULL user in pam_get_user(3).
271
272 - ENHANCE: Various minor documentation improvements.
273
274Thanks to Dmitry V. Levin <ldv@altlinux.org> for considerable
275assistance with this release.
276============================================================================
277OpenPAM Digitalis						2003-06-01
278
279 - ENHANCE: Completely rewrite the configuration parser and add
280   support for the "include" control flag.
281
282 - ENHANCE: Improve portability to NetBSD, OpenBSD and Linux.
283
284 - ENHANCE: Lots of additional paranoia.
285
286 - BUGFIX: The sample su(1) application dropped privileges before
287   forking instead of after.
288
289 - ENHANCE: Document openpam_log(3).
290
291 - ENHANCE: Other minor documentation fixes.
292
293Thanks to Dmitry V. Levin <ldv@altlinux.org> for considerable
294assistance with this release.
295============================================================================
296OpenPAM Dianthus						2003-05-02
297
298 - BUGFIX: Initialize some potentially uninitialized variables.
299
300 - BUGFIX: Silence some warnings emitted by gcc -std=iso9899:1999.
301
302 - BUGFIX: In pam_getenv(), return a pointer to the stored variable
303   instead of a freshly allocated copy.
304
305 - ENHANCE: Detect recursion in openpam_borrow_cred()
306
307 - ENHANCE: Make borrowing one's own credentials a no-op.
308
309 - ENHANCE: Further improve debugging support.
310
311 - ENHANCE: Clean up some variable names.
312============================================================================
313OpenPAM Daffodil						2003-01-06
314
315 - ENHANCE: Document dependency on <sys/types.h> (for size_t)
316
317 - ENHANCE: Slightly improve error detection in openpam_ttyconv().
318
319 - BUGFIX: Fix several typos in debugging macros.
320============================================================================
321OpenPAM Cyclamen						2002-12-12
322
323 - ENHANCE: Improve recursion detection in openpam_dispatch().
324
325 - ENHANCE: Add debugging messages at entry and exit points of most
326   functions.
327
328 - ENHANCE: Fix some minor style issues.
329
330 - BUGFIX: Add default cases to the switches in openpam_log.c.
331
332 - ENHANCE: Add /usr/local/etc/pam.conf to policy search path.
333
334 - BUGFIX: In openpam_ttyconv(3), print the prompt to stdout rather
335   than stderr.
336============================================================================
337OpenPAM Citronella						2002-06-30
338
339 - ENHANCE: Add the "binding" control flag (from Solaris 9).
340
341 - ENHANCE: Define struct pam_repository and PAM_REPOSITORY (from
342   Solaris 9).
343
344 - ENHANCE: Flesh out the pam(3) man page.
345
346 - ENHANCE: Add an openpam(3) page with cross-references to all the
347   documented OpenPAM API extensions.
348
349 - ENHANCE: Add a pam_conv(3) man page describing the conversation
350   system.
351
352 - ENHANCE: Improved sample application.
353
354 - ENHANCE: Added sample pam_unix module.
355
356 - BUGFIX: Various documentation nits.
357============================================================================
358OpenPAM Cinquefoil						2002-05-24
359
360 - BUGFIX: Various warnings uncovered by gcc 3.1.
361
362 - ENHANCE: Add a null conversation function, openpam_nullconv(3).
363
364 - BUGFIX: Initialize the "other" chain to all zeroes.
365
366 - ENHANCE: Document openpam_ttyconv(3).
367============================================================================
368OpenPAM Cinnamon						2002-05-02
369
370 - ENHANCE: Add a null conversation function, openpam_nullconv().
371
372 - BUGFIX: Various markup bugs in the documentation.
373
374 - BUGFIX: Document <security/openpam.h>.
375
376 - BUGFIX: Duplicate expansion of openpam_log() macro arguments.
377
378 - ENHANCE: Restructure the policy-loading code and align our use of
379   the "other" policy with Solaris and Linux-PAM.
380
381 - ENHANCE: Log dlopen() and dlsym() failures.
382
383 - ENHANCE: In openpam_ttyconv(), emit a newline after error and info
384   messages unless the message contains one already.
385
386 - BUGFIX: In pam_vprompt(), initialize the response pointer to NULL
387   so we can detect whether the conversation function touched it.
388============================================================================
389OpenPAM Cineraria						2002-04-14
390
391 - BUGFIX: Fix confusion between token and prompt in
392   pam_get_authtok(3).
393
394 - ENHANCE: Improved documentation.
395
396 - ENHANCE: Adopt the same preprocessor tricks that were used in
397   FreeBSD's version of Linux-PAM to simplify static linking without
398   requiring dummy primitives.
399
400 - ENHANCE: Move the policy-loading code out of pam_start.c.
401
402 - BUGFIX: Fix typo in one of the versions of the openpam_log macro.
403
404 - ENHANCE: Add versioning macros.
405============================================================================
406OpenPAM Cinchona						2002-04-08
407
408 - ENHANCE: Improved documentation for several API functions.
409
410 - BUGFIX: Fix bug in pam_set_data() that would result in corruption
411   of the module data list.
412
413 - BUGFIX: Allocate the correct amount of memory for the environment
414   list in pam_putenv().
415
416 - ENHANCE: Change pam_get_authtok()'s prototype so the caller can
417   specify what token it wants.  Also introduce PAM_OLDAUTHTOK_PROMPT.
418
419 - BUGFIX: Plug memory leak in pam_get_user() / pam_get_authtok(), and
420   reduce differences between these very similar functions.
421
422 - ENHANCE: Check flags carefully in pam_authenticate() and
423   pam_chauthtok().
424
425 - BUGFIX: Fix bugs in portability code; libpam now builds on NetBSD.
426
427 - ENHANCE: In pam_get_authtok(), if PAM_OLDAUTHTOK is set, we're
428   asked for PAM_AUTHTOK, and we have to prompt the user, prompt her
429   twice and compare the responses.
430
431 - ENHANCE: Add openpam_{borrow,restore}_cred(), for temporarily
432   switching to user credentials.
433
434 - ENHANCE: Add openpam_free_data(), a generic cleanup function for
435   pam_set_data() consumers.
436============================================================================
437OpenPAM Centaury						2002-03-14
438
439 - BUGFIX: Add missing #include <string.h> to openpam_log.c.
440
441 - BUGFIX: s/PAM_REINITIALISE_CRED/PAM_REINITIALIZE_CRED/.  XSSO uses
442   the former, but Solaris and Linux-PAM use the latter.
443
444 - BUGFIX: The dynamic loader and the module cache contained a number
445   of bugs which would cause a segmentation fault if pam_start(3) was
446   called again after pam_end(3), as happens in login(1), xdm(1) etc.
447   after a failed login.
448
449 - BUGFIX: Refer to a module by the name used in the policy file, even
450   if the module that was actually loaded was versioned.
451
452 - ENHANCE: Suppress debugging logs, unless compiled with -DDEBUG.
453============================================================================
454OpenPAM Celandine						2002-03-05
455
456 - BUGFIX: PAM_TRY_AGAIN is a valid return value for pam_chauthtok().
457
458 - BUGFIX: Run passwd chain twice, first with the PAM_PRELIM_CHECK
459   flag set, then with the PAM_UPDATE_AUTHTOK flag set.
460
461 - BUGFIX: Failure of a "sufficient" module should not terminate the
462   passwd chain if the PAM_PRELIM_CHECK flag is set.
463
464 - BUGFIX: Clear PAM_AUTHTOK after running the service modules.
465
466 - ENHANCE: Prevent applications from specifying the PAM_PRELIM_CHECK
467   or PAM_UPDATE_AUTHTOK flags themselves.
468
469 - BUGFIX: openpam_set_option() did not support changing the value of
470   an existing option.
471
472 - ENHANCE: Add support for module versioning.  OpenPAM will prefer a
473   module with the same version number as the library itself to one
474   with no version number at all.
475============================================================================
476OpenPAM Cantaloupe						2002-02-22
477
478 - BUGFIX: The proper use of PAM_SYMBOL_ERR is to indicate an invalid
479   argument to pam_[gs]et_item(3), not to indicate dlsym(3) failures.
480
481 - ENHANCE: Add in-line documentation in most source files, and a Perl
482   script that generates mdoc code from that.
483
484 - BUGFIX: The environment list was not properly NULL-terminated.
485
486 - ENHANCE: Allow the PAM_AUTHTOK_PROMPT item to override the prompt
487   specified by the module.
488
489 - BUGFIX: PAM_NUM_ITEMS was set too low.  It has been moved to
490   pam_constants.h to avoid it going stale again.
491
492 - ENHANCE: Move all code related to static modules into a separate
493   file.
494
495 - ENHANCE: openpam_ttyconv() now masks most signals while prompting the
496   user, and supports setting a timeout (which defaults to off).
497
498 - BUGFIX: Some manual pages referenced XSSO even though they
499   documented OpenPAM-specific functions.
500
501 - ENHANCE: Added openpam_get_option() and openpam_set_option().
502
503 - ENHANCE: openpam_get_authtok() now respects the echo_pass,
504   try_first_pass, and use_first_pass options.
505============================================================================
506OpenPAM Caliopsis						2002-02-13
507
508Fixed a number of bugs in the previous release, including:
509  - a number of bugs in and related to pam_[gs]et_item(3)
510  - off-by-one bug in pam_start.c would trim last character off certain
511    configuration lines
512  - incorrect ordering of an array in openpam_load.c would cause service
513    module functions to get mixed up
514  - missing 'continue' in openpam_dispatch.c caused successes to be
515    counted as failures
516============================================================================
517OpenPAM Calamite						2002-02-09
518
519First (beta) release.
520