diff options
| author | Federico Tedin | 2021-09-15 00:15:16 +0200 |
|---|---|---|
| committer | Eli Zaretskii | 2021-09-18 09:36:26 +0300 |
| commit | 4e21c5f451a18f96172e63dbe8a3ceef780758bb (patch) | |
| tree | eb8e8408ac1db13a0892eb20818189e3f3f086fd /src/lisp.h | |
| parent | 62e870691d2192e7848e047734556dec21797a7b (diff) | |
| download | emacs-4e21c5f451a18f96172e63dbe8a3ceef780758bb.tar.gz emacs-4e21c5f451a18f96172e63dbe8a3ceef780758bb.zip | |
Check for null bytes in filenames in 'expand-file-name' (bug#49723)
* src/fileio.c (expand-file-name): Check for null bytes for both
NAME and DEFAULT-DIRECTORY arguments. Also check for null bytes
in buffer-local default-directory, assuming it is used.
* src/coding.c (encode_file_name): Use CHECK_STRING_NULL_BYTES.
* src/lisp.h (CHECK_STRING_NULL_BYTES): Add function for checking
for null bytes in Lisp strings.
* test/src/fileio-tests.el (fileio-test--expand-file-name-null-bytes):
Add test for new changes to expand-file-name.
* etc/NEWS: Announce changes.
Diffstat (limited to 'src/lisp.h')
| -rw-r--r-- | src/lisp.h | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/src/lisp.h b/src/lisp.h index 7bfc69b647b..9716b34baee 100644 --- a/src/lisp.h +++ b/src/lisp.h | |||
| @@ -1615,6 +1615,13 @@ STRING_SET_CHARS (Lisp_Object string, ptrdiff_t newsize) | |||
| 1615 | XSTRING (string)->u.s.size = newsize; | 1615 | XSTRING (string)->u.s.size = newsize; |
| 1616 | } | 1616 | } |
| 1617 | 1617 | ||
| 1618 | INLINE void | ||
| 1619 | CHECK_STRING_NULL_BYTES (Lisp_Object string) | ||
| 1620 | { | ||
| 1621 | CHECK_TYPE (memchr (SSDATA (string), '\0', SBYTES (string)) == NULL, | ||
| 1622 | Qfilenamep, string); | ||
| 1623 | } | ||
| 1624 | |||
| 1618 | /* A regular vector is just a header plus an array of Lisp_Objects. */ | 1625 | /* A regular vector is just a header plus an array of Lisp_Objects. */ |
| 1619 | 1626 | ||
| 1620 | struct Lisp_Vector | 1627 | struct Lisp_Vector |