Mercurial > hg > xemacs-beta
comparison tests/automated/lisp-tests.el @ 5891:a0e751d6c3ad
Import the #'clear-string API from GNU, use it in tls.c
src/ChangeLog addition:
2015-04-18 Aidan Kehoe <kehoea@parhasard.net>
* sequence.c (Fclear_string): New, API from GNU. Zero a string's
contents, making sure the text is not kept around even when the
string's data is reallocated because of a changed character
length.
* sequence.c (syms_of_sequence): Make it available to Lisp.
* lisp.h: Make it available to C code.
* tls.c (nss_pk11_password): Use it.
* tls.c (gnutls_pk11_password): Use it.
* tls.c (openssl_password): Use it.
tests/ChangeLog addition:
2015-04-18 Aidan Kehoe <kehoea@parhasard.net>
* automated/lisp-tests.el:
Test #'clear-string, just added. Unfortunately there's no way to
be certain from Lisp that the old password data has been erased
after realloc; it may be worth adding a test to tests.c, but
*we'll be reading memory we shouldn't be*, so that gives me pause.
author | Aidan Kehoe <kehoea@parhasard.net> |
---|---|
date | Sat, 18 Apr 2015 23:00:14 +0100 |
parents | c96000075e49 |
children | d3d073aceaea |
comparison
equal
deleted
inserted
replaced
5888:a85efdabe237 | 5891:a0e751d6c3ad |
---|---|
3794 (Assert (eql ?\x0a (digit-char 10 16 binary-table)) | 3794 (Assert (eql ?\x0a (digit-char 10 16 binary-table)) |
3795 "checking `digit-char' reflects RADIX-TABLE, 10, base 16") | 3795 "checking `digit-char' reflects RADIX-TABLE, 10, base 16") |
3796 (Assert (eql ?\x09 (digit-char 9 nil binary-table)) | 3796 (Assert (eql ?\x09 (digit-char 9 nil binary-table)) |
3797 "checking `digit-char' reflects RADIX-TABLE, 9, base 10")) | 3797 "checking `digit-char' reflects RADIX-TABLE, 9, base 10")) |
3798 | 3798 |
3799 ;; Test #'clear-string. | |
3800 | |
3801 (Check-Error wrong-type-argument (clear-string [?\x00 ?\xff])) | |
3802 (Check-Error wrong-type-argument (clear-string '(?\x00 ?\xff))) | |
3803 (Check-Error wrong-type-argument (clear-string #*1010)) | |
3804 (Check-Error wrong-number-of-arguments (clear-string "hello" ?*)) | |
3805 | |
3806 (let* ((template (concat | |
3807 "this is a template string, " | |
3808 (if (unicode-to-char #x06af) | |
3809 (decode-coding-string | |
3810 (concat | |
3811 "\xd8\xa8\xd9\x87 \xd9\x86\xd8\xb8\xd8\xb1 " | |
3812 "\xd9\x85\xd9\x86 \xd8\xae\xd9\x88\xda\xa9 " | |
3813 "\xd8\xae\xd9\x88\xd8\xb4\xd9\x85\xd8\xb2\xd9\x87 " | |
3814 "\xd8\xa7\xd8\xb3\xd8\xaa") | |
3815 'utf-8)))) | |
3816 (length (length template)) | |
3817 (null (make-string length ?\x00))) | |
3818 (Assert (null (clear-string (copy-sequence template)))) | |
3819 (Assert (eql length (let ((string (copy-sequence template))) | |
3820 (clear-string string) | |
3821 (length string)))) | |
3822 (Assert (equal null (let ((string (copy-sequence template))) | |
3823 (clear-string string) | |
3824 string)))) | |
3825 | |
3826 ;; No way to check from Lisp whether the data was actually nulled. | |
3827 | |
3799 ;;; end of lisp-tests.el | 3828 ;;; end of lisp-tests.el |