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