[rtems commit] IMFS: NUL-terminate name returned by readdir()

Sebastian Huber sebh at rtems.org
Tue Mar 17 15:18:41 UTC 2015


Module:    rtems
Branch:    master
Commit:    e6f4a612d85cab1ac19cd04925eb96c157d75424
Changeset: http://git.rtems.org/rtems/commit/?id=e6f4a612d85cab1ac19cd04925eb96c157d75424

Author:    Sebastian Huber <sebastian.huber at embedded-brains.de>
Date:      Mon Mar 16 20:28:20 2015 +0100

IMFS: NUL-terminate name returned by readdir()

---

 cpukit/libfs/src/imfs/imfs_dir_default.c | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/cpukit/libfs/src/imfs/imfs_dir_default.c b/cpukit/libfs/src/imfs/imfs_dir_default.c
index 2f12072..b31a50e 100644
--- a/cpukit/libfs/src/imfs/imfs_dir_default.c
+++ b/cpukit/libfs/src/imfs/imfs_dir_default.c
@@ -19,6 +19,7 @@
 
 #include "imfs.h"
 
+#include <sys/param.h>
 #include <dirent.h>
 #include <string.h>
 
@@ -73,8 +74,10 @@ static ssize_t IMFS_dir_read(
          dir_ent->d_off = current_entry;
          dir_ent->d_reclen = sizeof( *dir_ent );
          dir_ent->d_ino = IMFS_node_to_ino( imfs_node );
-         dir_ent->d_namlen = imfs_node->namelen;
-         memcpy( dir_ent->d_name, imfs_node->name, dir_ent->d_namlen + 1 );
+         dir_ent->d_namlen =
+           MIN( imfs_node->namelen, sizeof( dir_ent->d_name ) - 1 );
+         dir_ent->d_name[ dir_ent->d_namlen ] = '\0';
+         memcpy( dir_ent->d_name, imfs_node->name, dir_ent->d_namlen );
 
          iop->offset += sizeof( *dir_ent );
          bytes_transferred += (ssize_t) sizeof( *dir_ent );




More information about the vc mailing list