diff options
author | Kaz Kylheku <kaz@kylheku.com> | 2020-02-14 21:55:24 -0800 |
---|---|---|
committer | Kaz Kylheku <kaz@kylheku.com> | 2020-02-14 21:55:24 -0800 |
commit | c3a0ceb2cea1a9d43f2baf5a2e63d0d712c8df19 (patch) | |
tree | 242ffa74838fcffdc039fce1cd58fc84a220a743 /args.c | |
parent | 176185cd6530bad1f8c3b36fe54bcab7580260ff (diff) | |
download | txr-c3a0ceb2cea1a9d43f2baf5a2e63d0d712c8df19.tar.gz txr-c3a0ceb2cea1a9d43f2baf5a2e63d0d712c8df19.tar.bz2 txr-c3a0ceb2cea1a9d43f2baf5a2e63d0d712c8df19.zip |
crypt: harden against crashes.
The crypt function on glibc, and maybe other platforms, simply
crashes when given a perfectly valid salt string that contains
invalid salt syntax. This is nasty; we want TXR Lisp
library functions to be robust; bringing down the image is not
acceptable.
Also, crypt may return a null pointer. glibc's crypt does
this in certain situations, like when the "2a" (Blowfish)
algorithm is specified when not available. We are not checking
for this null return, in which case the ensuing crash is our
fault.
* sysif.c (salt_char_p, validate_salt): New functions.
(crypt_wrap): Validate the salt via validate_salt.
Check the return value from crypt/crypt_r; if null,
then throw an exception that incorporates the errno
information.
Diffstat (limited to 'args.c')
0 files changed, 0 insertions, 0 deletions