diff options
author | Chris Johns <chrisj@rtems.org> | 2010-02-26 05:54:59 +0000 |
---|---|---|
committer | Chris Johns <chrisj@rtems.org> | 2010-02-26 05:54:59 +0000 |
commit | 3cfa6368c3211eed83df08850f0af26481f161f6 (patch) | |
tree | 822cfa7d031cb1d644172cff41ab8f952c038a34 /cpukit/libfs/src/rfs/rtems-rfs-dir.c | |
parent | 28b38f3c3073a2edf7daa7140c5db204fa3645ff (diff) |
010-02-26 Chris Johns <chrisj@rtems.org>
* libfs/src/rfs/rtems-rfs-block.c: Reset a buffer handle after
moving down an indirection level.
* libfs/src/rfs/rtems-rfs-dir.c: Move directory entry validation
into a macro and use the macro. Fix the range check on the ino so
all inodes can be used.
* libfs/src/rfs/rtems-rfs-file-system.c,
libfs/src/rfs/rtems-rfs-file-system.h:: Add a version number to
the superblock. Use RTEMS_RFS_INODE_SIZE.
* libfs/src/rfs/rtems-rfs-file.c: Fix the size offset on partial
block lengths. Set the size in the file handle on a truncate to
0.
* libfs/src/rfs/rtems-rfs-format.c: Add a version number to
the superblock. Use RTEMS_RFS_INODE_SIZE. A better set of defaults
for small disks.
* libfs/src/rfs/rtems-rfs-inode.c: Use RTEMS_RFS_INODE_SIZE. Free
the allocated inode if it cannot be opened.
* libfs/src/rfs/rtems-rfs-inode.h: Add RTEMS_RFS_INODE_SIZE.
* libfs/src/rfs/rtems-rfs-rtems-file.c: Move some of the iop
acceses inside the fs lock.
* libfs/src/rfs/rtems-rfs-shell.c: Use RTEMS_RFS_INODE_SIZE.
Diffstat (limited to 'cpukit/libfs/src/rfs/rtems-rfs-dir.c')
-rw-r--r-- | cpukit/libfs/src/rfs/rtems-rfs-dir.c | 32 |
1 files changed, 12 insertions, 20 deletions
diff --git a/cpukit/libfs/src/rfs/rtems-rfs-dir.c b/cpukit/libfs/src/rfs/rtems-rfs-dir.c index 4bc79a11cc..03fd0d873b 100644 --- a/cpukit/libfs/src/rfs/rtems-rfs-dir.c +++ b/cpukit/libfs/src/rfs/rtems-rfs-dir.c @@ -32,6 +32,13 @@ #include <rtems/rfs/rtems-rfs-dir.h> #include <rtems/rfs/rtems-rfs-dir-hash.h> +/** + * Validate the directory entry data. + */ +#define rtems_rfs_dir_entry_valid(_f, _l, _i) \ + (((_l) <= RTEMS_RFS_DIR_ENTRY_SIZE) || ((_l) >= rtems_rfs_fs_max_name (_f)) \ + || (_i < RTEMS_RFS_ROOT_INO) || (_i > rtems_rfs_fs_inodes (_f))) + int rtems_rfs_dir_lookup_ino (rtems_rfs_file_system* fs, rtems_rfs_inode_handle* inode, @@ -136,10 +143,7 @@ rtems_rfs_dir_lookup_ino (rtems_rfs_file_system* fs, if (elength == RTEMS_RFS_DIR_ENTRY_EMPTY) break; - if ((elength <= RTEMS_RFS_DIR_ENTRY_SIZE) - || (elength >= rtems_rfs_fs_max_name (fs)) - || (*ino < RTEMS_RFS_ROOT_INO) - || (*ino >= rtems_rfs_fs_inodes (fs))) + if (rtems_rfs_dir_entry_valid (fs, elength, *ino)) { if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_LOOKUP_INO)) printf ("rtems-rfs: dir-lookup-ino: " \ @@ -331,10 +335,7 @@ rtems_rfs_dir_add_entry (rtems_rfs_file_system* fs, break; } - if ((elength <= RTEMS_RFS_DIR_ENTRY_SIZE) - || (elength >= rtems_rfs_fs_max_name (fs)) - || (eino < RTEMS_RFS_ROOT_INO) - || (eino >= rtems_rfs_fs_inodes (fs))) + if (rtems_rfs_dir_entry_valid (fs, elength, eino)) { if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_ADD_ENTRY)) printf ("rtems-rfs: dir-add-entry: " \ @@ -425,10 +426,7 @@ rtems_rfs_dir_del_entry (rtems_rfs_file_system* fs, if (elength == RTEMS_RFS_DIR_ENTRY_EMPTY) break; - if ((elength <= RTEMS_RFS_DIR_ENTRY_SIZE) - || (elength >= rtems_rfs_fs_max_name (fs)) - || (eino < RTEMS_RFS_ROOT_INO) - || (eino >= rtems_rfs_fs_inodes (fs))) + if (rtems_rfs_dir_entry_valid (fs, elength, eino)) { if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_DEL_ENTRY)) printf ("rtems-rfs: dir-del-entry: " \ @@ -572,10 +570,7 @@ rtems_rfs_dir_read (rtems_rfs_file_system* fs, if (elength != RTEMS_RFS_DIR_ENTRY_EMPTY) { - if ((elength <= RTEMS_RFS_DIR_ENTRY_SIZE) - || (elength >= rtems_rfs_fs_max_name (fs)) - || (eino < RTEMS_RFS_ROOT_INO) - || (eino >= rtems_rfs_fs_inodes (fs))) + if (rtems_rfs_dir_entry_valid (fs, elength, eino)) { if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_READ)) printf ("rtems-rfs: dir-read: " \ @@ -690,10 +685,7 @@ rtems_rfs_dir_empty (rtems_rfs_file_system* fs, if (elength == RTEMS_RFS_DIR_ENTRY_EMPTY) break; - if ((elength <= RTEMS_RFS_DIR_ENTRY_SIZE) - || (elength >= rtems_rfs_fs_max_name (fs)) - || (eino < RTEMS_RFS_ROOT_INO) - || (eino >= rtems_rfs_fs_inodes (fs))) + if (rtems_rfs_dir_entry_valid (fs, elength, eino)) { if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_EMPTY)) printf ("rtems-rfs: dir-empty: " \ |