From eae496a72e270fd7af411714738e99a7fadfd19b Mon Sep 17 00:00:00 2001
From: Rickard Green
Date: Wed, 6 Sep 2017 17:00:14 +0200
Subject: Don't allow null in filenames
---
lib/kernel/doc/src/file.xml | 38 ++++++++++++++++++++++++++++++++++----
1 file changed, 34 insertions(+), 4 deletions(-)
(limited to 'lib/kernel/doc/src')
diff --git a/lib/kernel/doc/src/file.xml b/lib/kernel/doc/src/file.xml
index b674b3ca93..593bee74fe 100644
--- a/lib/kernel/doc/src/file.xml
+++ b/lib/kernel/doc/src/file.xml
@@ -59,7 +59,7 @@
terminal supports UTF-8, otherwise latin1. The default can
be overridden using +fnl (to force latin1 mode)
or +fnu (to force utf8 mode) when starting
- erts:erl.
+ erl.
On operating systems with transparent naming, files can be
inconsistently named, for example, some files are encoded in UTF-8 while
@@ -81,6 +81,22 @@
See also section Notes About Raw Filenames in the STDLIB User's Guide.
+
+ File operations used to accept filenames containing
+ null characters (integer value zero). This caused
+ the name to be truncated at the first null character.
+ Filenames containing null characters inside the filename
+ are now rejected and will cause primitive
+ file operations fail.
+
+
+ Currently null characters at the end of the filename
+ will be accepted by primitive file operations. Such
+ filenames are however still documented as invalid. The
+ implementation will also change in the future and
+ reject such filenames.
+
+
@@ -96,9 +112,21 @@
+
+
+ See also the documentation of the
+ name_all() type.
+
+
+
+
+ See also the documentation of the
+ name_all() type.
+
+
@@ -112,21 +140,23 @@
If VM is in Unicode filename mode, string() and char()
- are allowed to be > 255.
+ are allowed to be > 255. See also the documentation of the
+ name_all() type.
- If VM is in Unicode filename mode, string() and char()
+
If VM is in Unicode filename mode, characters
are allowed to be > 255.
RawFilename is a filename not subject to
Unicode translation,
meaning that it can contain characters not conforming to
the Unicode encoding expected from the file system
(that is, non-UTF-8 characters although the VM is started
- in Unicode filename mode).
+ in Unicode filename mode). Null characters (integer value zero)
+ are not allowed in filenames (not even at the end).
--
cgit v1.2.3