mirror of
https://gitlab.rtems.org/rtems/rtos/rtems.git
synced 2025-12-05 15:15:44 +00:00
Changed IMFS to use IMFS_NAME_MAX as the maximum length of a basename
rather then NAME_MAX. NAME_MAX is 255 and that lets IMFS chew up memory too fast. Perhaps in the future, the places in IMFS that put a maximum length name string on the stack and the jnode structure does not include a maximu length name string can be fixed so this is not a problem.
This commit is contained in:
@@ -32,12 +32,16 @@
|
||||
|
||||
Chain_Control rtems_filesystem_mount_table_control;
|
||||
|
||||
#include "imfs.h"
|
||||
|
||||
/* XXX this structure should be in an IMFS specific file */
|
||||
/* XXX this structure should use real constants */
|
||||
|
||||
rtems_filesystem_limits_and_options_t IMFS_LIMITS_AND_OPTIONS = {
|
||||
5, /* link_max */
|
||||
6, /* max_canon */
|
||||
7, /* max_input */
|
||||
255, /* name_max */
|
||||
IMFS_NAME_MAX, /* name_max */
|
||||
255, /* path_max */
|
||||
2, /* pipe_buf */
|
||||
1, /* posix_async_io */
|
||||
|
||||
@@ -125,26 +125,32 @@ typedef union {
|
||||
IMFS_memfile_t file;
|
||||
} IMFS_types_union;
|
||||
|
||||
/*
|
||||
* Maximum length of a "basename" of an IMFS file/node.
|
||||
*/
|
||||
|
||||
#define IMFS_NAME_MAX 32
|
||||
|
||||
/*
|
||||
* The control structure for an IMFS jnode.
|
||||
*/
|
||||
|
||||
struct IMFS_jnode_tt {
|
||||
Chain_Node Node; /* for chaining them together */
|
||||
IMFS_jnode_t *Parent; /* Parent node */
|
||||
char name[NAME_MAX+1]; /* "basename" */
|
||||
mode_t st_mode; /* File mode */
|
||||
nlink_t st_nlink; /* Link count */
|
||||
ino_t st_ino; /* inode */
|
||||
Chain_Node Node; /* for chaining them together */
|
||||
IMFS_jnode_t *Parent; /* Parent node */
|
||||
char name[IMFS_NAME_MAX+1]; /* "basename" */
|
||||
mode_t st_mode; /* File mode */
|
||||
nlink_t st_nlink; /* Link count */
|
||||
ino_t st_ino; /* inode */
|
||||
|
||||
uid_t st_uid; /* User ID of owner */
|
||||
gid_t st_gid; /* Group ID of owner */
|
||||
uid_t st_uid; /* User ID of owner */
|
||||
gid_t st_gid; /* Group ID of owner */
|
||||
|
||||
time_t st_atime; /* Time of last access */
|
||||
time_t st_mtime; /* Time of last modification */
|
||||
time_t st_ctime; /* Time of last status change */
|
||||
IMFS_jnode_types_t type; /* Type of this entry */
|
||||
IMFS_types_union info;
|
||||
time_t st_atime; /* Time of last access */
|
||||
time_t st_mtime; /* Time of last modification */
|
||||
time_t st_ctime; /* Time of last status change */
|
||||
IMFS_jnode_types_t type; /* Type of this entry */
|
||||
IMFS_types_union info;
|
||||
};
|
||||
|
||||
#define IMFS_update_atime( _jnode ) \
|
||||
|
||||
@@ -51,7 +51,7 @@ IMFS_jnode_t *IMFS_create_node(
|
||||
|
||||
node->st_nlink = 1;
|
||||
node->type = type;
|
||||
strncpy( node->name, name, NAME_MAX );
|
||||
strncpy( node->name, name, IMFS_NAME_MAX );
|
||||
|
||||
/*
|
||||
* Fill in the mode and permission information for the jnode structure.
|
||||
|
||||
@@ -277,7 +277,7 @@ int IMFS_evaluate_for_make(
|
||||
int i = 0;
|
||||
int len;
|
||||
IMFS_token_types type;
|
||||
char token[ NAME_MAX + 1 ];
|
||||
char token[ IMFS_NAME_MAX + 1 ];
|
||||
rtems_filesystem_location_info_t newloc;
|
||||
IMFS_jnode_t *node;
|
||||
int done = 0;
|
||||
@@ -467,7 +467,7 @@ int IMFS_eval_path(
|
||||
int i = 0;
|
||||
int len;
|
||||
IMFS_token_types type = IMFS_CURRENT_DIR;
|
||||
char token[ NAME_MAX + 1 ];
|
||||
char token[ IMFS_NAME_MAX + 1 ];
|
||||
rtems_filesystem_location_info_t newloc;
|
||||
IMFS_jnode_t *node;
|
||||
int result;
|
||||
|
||||
@@ -32,11 +32,11 @@ IMFS_token_types IMFS_get_token(
|
||||
* Copy a name into token. (Remember NULL is a token.)
|
||||
*/
|
||||
|
||||
while ( !IMFS_is_separator( path[i] ) && (i <= NAME_MAX) ) {
|
||||
while ( !IMFS_is_separator( path[i] ) && (i <= IMFS_NAME_MAX) ) {
|
||||
|
||||
token[i] = path[i];
|
||||
|
||||
if (i == NAME_MAX)
|
||||
if (i == IMFS_NAME_MAX)
|
||||
return IMFS_INVALID_TOKEN;
|
||||
|
||||
if ( !IMFS_is_valid_name_char( token[i] ) )
|
||||
|
||||
@@ -28,7 +28,7 @@ int IMFS_link(
|
||||
{
|
||||
IMFS_types_union info;
|
||||
IMFS_jnode_t *new_node;
|
||||
char new_name[ NAME_MAX + 1 ];
|
||||
char new_name[ IMFS_NAME_MAX + 1 ];
|
||||
int i;
|
||||
|
||||
/*
|
||||
|
||||
@@ -35,7 +35,7 @@ int IMFS_mknod(
|
||||
IMFS_token_types type = 0;
|
||||
IMFS_jnode_t *new_node;
|
||||
int result;
|
||||
char new_name[ NAME_MAX + 1 ];
|
||||
char new_name[ IMFS_NAME_MAX + 1 ];
|
||||
IMFS_types_union info;
|
||||
|
||||
IMFS_get_token( token, new_name, &result );
|
||||
|
||||
@@ -28,7 +28,7 @@ int IMFS_symlink(
|
||||
{
|
||||
IMFS_types_union info;
|
||||
IMFS_jnode_t *new_node;
|
||||
char new_name[ NAME_MAX + 1 ];
|
||||
char new_name[ IMFS_NAME_MAX + 1 ];
|
||||
int i;
|
||||
|
||||
/*
|
||||
|
||||
@@ -125,26 +125,32 @@ typedef union {
|
||||
IMFS_memfile_t file;
|
||||
} IMFS_types_union;
|
||||
|
||||
/*
|
||||
* Maximum length of a "basename" of an IMFS file/node.
|
||||
*/
|
||||
|
||||
#define IMFS_NAME_MAX 32
|
||||
|
||||
/*
|
||||
* The control structure for an IMFS jnode.
|
||||
*/
|
||||
|
||||
struct IMFS_jnode_tt {
|
||||
Chain_Node Node; /* for chaining them together */
|
||||
IMFS_jnode_t *Parent; /* Parent node */
|
||||
char name[NAME_MAX+1]; /* "basename" */
|
||||
mode_t st_mode; /* File mode */
|
||||
nlink_t st_nlink; /* Link count */
|
||||
ino_t st_ino; /* inode */
|
||||
Chain_Node Node; /* for chaining them together */
|
||||
IMFS_jnode_t *Parent; /* Parent node */
|
||||
char name[IMFS_NAME_MAX+1]; /* "basename" */
|
||||
mode_t st_mode; /* File mode */
|
||||
nlink_t st_nlink; /* Link count */
|
||||
ino_t st_ino; /* inode */
|
||||
|
||||
uid_t st_uid; /* User ID of owner */
|
||||
gid_t st_gid; /* Group ID of owner */
|
||||
uid_t st_uid; /* User ID of owner */
|
||||
gid_t st_gid; /* Group ID of owner */
|
||||
|
||||
time_t st_atime; /* Time of last access */
|
||||
time_t st_mtime; /* Time of last modification */
|
||||
time_t st_ctime; /* Time of last status change */
|
||||
IMFS_jnode_types_t type; /* Type of this entry */
|
||||
IMFS_types_union info;
|
||||
time_t st_atime; /* Time of last access */
|
||||
time_t st_mtime; /* Time of last modification */
|
||||
time_t st_ctime; /* Time of last status change */
|
||||
IMFS_jnode_types_t type; /* Type of this entry */
|
||||
IMFS_types_union info;
|
||||
};
|
||||
|
||||
#define IMFS_update_atime( _jnode ) \
|
||||
|
||||
@@ -51,7 +51,7 @@ IMFS_jnode_t *IMFS_create_node(
|
||||
|
||||
node->st_nlink = 1;
|
||||
node->type = type;
|
||||
strncpy( node->name, name, NAME_MAX );
|
||||
strncpy( node->name, name, IMFS_NAME_MAX );
|
||||
|
||||
/*
|
||||
* Fill in the mode and permission information for the jnode structure.
|
||||
|
||||
@@ -277,7 +277,7 @@ int IMFS_evaluate_for_make(
|
||||
int i = 0;
|
||||
int len;
|
||||
IMFS_token_types type;
|
||||
char token[ NAME_MAX + 1 ];
|
||||
char token[ IMFS_NAME_MAX + 1 ];
|
||||
rtems_filesystem_location_info_t newloc;
|
||||
IMFS_jnode_t *node;
|
||||
int done = 0;
|
||||
@@ -467,7 +467,7 @@ int IMFS_eval_path(
|
||||
int i = 0;
|
||||
int len;
|
||||
IMFS_token_types type = IMFS_CURRENT_DIR;
|
||||
char token[ NAME_MAX + 1 ];
|
||||
char token[ IMFS_NAME_MAX + 1 ];
|
||||
rtems_filesystem_location_info_t newloc;
|
||||
IMFS_jnode_t *node;
|
||||
int result;
|
||||
|
||||
@@ -32,11 +32,11 @@ IMFS_token_types IMFS_get_token(
|
||||
* Copy a name into token. (Remember NULL is a token.)
|
||||
*/
|
||||
|
||||
while ( !IMFS_is_separator( path[i] ) && (i <= NAME_MAX) ) {
|
||||
while ( !IMFS_is_separator( path[i] ) && (i <= IMFS_NAME_MAX) ) {
|
||||
|
||||
token[i] = path[i];
|
||||
|
||||
if (i == NAME_MAX)
|
||||
if (i == IMFS_NAME_MAX)
|
||||
return IMFS_INVALID_TOKEN;
|
||||
|
||||
if ( !IMFS_is_valid_name_char( token[i] ) )
|
||||
|
||||
@@ -28,7 +28,7 @@ int IMFS_link(
|
||||
{
|
||||
IMFS_types_union info;
|
||||
IMFS_jnode_t *new_node;
|
||||
char new_name[ NAME_MAX + 1 ];
|
||||
char new_name[ IMFS_NAME_MAX + 1 ];
|
||||
int i;
|
||||
|
||||
/*
|
||||
|
||||
@@ -35,7 +35,7 @@ int IMFS_mknod(
|
||||
IMFS_token_types type = 0;
|
||||
IMFS_jnode_t *new_node;
|
||||
int result;
|
||||
char new_name[ NAME_MAX + 1 ];
|
||||
char new_name[ IMFS_NAME_MAX + 1 ];
|
||||
IMFS_types_union info;
|
||||
|
||||
IMFS_get_token( token, new_name, &result );
|
||||
|
||||
@@ -28,7 +28,7 @@ int IMFS_symlink(
|
||||
{
|
||||
IMFS_types_union info;
|
||||
IMFS_jnode_t *new_node;
|
||||
char new_name[ NAME_MAX + 1 ];
|
||||
char new_name[ IMFS_NAME_MAX + 1 ];
|
||||
int i;
|
||||
|
||||
/*
|
||||
|
||||
@@ -32,12 +32,16 @@
|
||||
|
||||
Chain_Control rtems_filesystem_mount_table_control;
|
||||
|
||||
#include "imfs.h"
|
||||
|
||||
/* XXX this structure should be in an IMFS specific file */
|
||||
/* XXX this structure should use real constants */
|
||||
|
||||
rtems_filesystem_limits_and_options_t IMFS_LIMITS_AND_OPTIONS = {
|
||||
5, /* link_max */
|
||||
6, /* max_canon */
|
||||
7, /* max_input */
|
||||
255, /* name_max */
|
||||
IMFS_NAME_MAX, /* name_max */
|
||||
255, /* path_max */
|
||||
2, /* pipe_buf */
|
||||
1, /* posix_async_io */
|
||||
|
||||
@@ -125,26 +125,32 @@ typedef union {
|
||||
IMFS_memfile_t file;
|
||||
} IMFS_types_union;
|
||||
|
||||
/*
|
||||
* Maximum length of a "basename" of an IMFS file/node.
|
||||
*/
|
||||
|
||||
#define IMFS_NAME_MAX 32
|
||||
|
||||
/*
|
||||
* The control structure for an IMFS jnode.
|
||||
*/
|
||||
|
||||
struct IMFS_jnode_tt {
|
||||
Chain_Node Node; /* for chaining them together */
|
||||
IMFS_jnode_t *Parent; /* Parent node */
|
||||
char name[NAME_MAX+1]; /* "basename" */
|
||||
mode_t st_mode; /* File mode */
|
||||
nlink_t st_nlink; /* Link count */
|
||||
ino_t st_ino; /* inode */
|
||||
Chain_Node Node; /* for chaining them together */
|
||||
IMFS_jnode_t *Parent; /* Parent node */
|
||||
char name[IMFS_NAME_MAX+1]; /* "basename" */
|
||||
mode_t st_mode; /* File mode */
|
||||
nlink_t st_nlink; /* Link count */
|
||||
ino_t st_ino; /* inode */
|
||||
|
||||
uid_t st_uid; /* User ID of owner */
|
||||
gid_t st_gid; /* Group ID of owner */
|
||||
uid_t st_uid; /* User ID of owner */
|
||||
gid_t st_gid; /* Group ID of owner */
|
||||
|
||||
time_t st_atime; /* Time of last access */
|
||||
time_t st_mtime; /* Time of last modification */
|
||||
time_t st_ctime; /* Time of last status change */
|
||||
IMFS_jnode_types_t type; /* Type of this entry */
|
||||
IMFS_types_union info;
|
||||
time_t st_atime; /* Time of last access */
|
||||
time_t st_mtime; /* Time of last modification */
|
||||
time_t st_ctime; /* Time of last status change */
|
||||
IMFS_jnode_types_t type; /* Type of this entry */
|
||||
IMFS_types_union info;
|
||||
};
|
||||
|
||||
#define IMFS_update_atime( _jnode ) \
|
||||
|
||||
@@ -51,7 +51,7 @@ IMFS_jnode_t *IMFS_create_node(
|
||||
|
||||
node->st_nlink = 1;
|
||||
node->type = type;
|
||||
strncpy( node->name, name, NAME_MAX );
|
||||
strncpy( node->name, name, IMFS_NAME_MAX );
|
||||
|
||||
/*
|
||||
* Fill in the mode and permission information for the jnode structure.
|
||||
|
||||
@@ -277,7 +277,7 @@ int IMFS_evaluate_for_make(
|
||||
int i = 0;
|
||||
int len;
|
||||
IMFS_token_types type;
|
||||
char token[ NAME_MAX + 1 ];
|
||||
char token[ IMFS_NAME_MAX + 1 ];
|
||||
rtems_filesystem_location_info_t newloc;
|
||||
IMFS_jnode_t *node;
|
||||
int done = 0;
|
||||
@@ -467,7 +467,7 @@ int IMFS_eval_path(
|
||||
int i = 0;
|
||||
int len;
|
||||
IMFS_token_types type = IMFS_CURRENT_DIR;
|
||||
char token[ NAME_MAX + 1 ];
|
||||
char token[ IMFS_NAME_MAX + 1 ];
|
||||
rtems_filesystem_location_info_t newloc;
|
||||
IMFS_jnode_t *node;
|
||||
int result;
|
||||
|
||||
@@ -32,11 +32,11 @@ IMFS_token_types IMFS_get_token(
|
||||
* Copy a name into token. (Remember NULL is a token.)
|
||||
*/
|
||||
|
||||
while ( !IMFS_is_separator( path[i] ) && (i <= NAME_MAX) ) {
|
||||
while ( !IMFS_is_separator( path[i] ) && (i <= IMFS_NAME_MAX) ) {
|
||||
|
||||
token[i] = path[i];
|
||||
|
||||
if (i == NAME_MAX)
|
||||
if (i == IMFS_NAME_MAX)
|
||||
return IMFS_INVALID_TOKEN;
|
||||
|
||||
if ( !IMFS_is_valid_name_char( token[i] ) )
|
||||
|
||||
@@ -28,7 +28,7 @@ int IMFS_link(
|
||||
{
|
||||
IMFS_types_union info;
|
||||
IMFS_jnode_t *new_node;
|
||||
char new_name[ NAME_MAX + 1 ];
|
||||
char new_name[ IMFS_NAME_MAX + 1 ];
|
||||
int i;
|
||||
|
||||
/*
|
||||
|
||||
@@ -35,7 +35,7 @@ int IMFS_mknod(
|
||||
IMFS_token_types type = 0;
|
||||
IMFS_jnode_t *new_node;
|
||||
int result;
|
||||
char new_name[ NAME_MAX + 1 ];
|
||||
char new_name[ IMFS_NAME_MAX + 1 ];
|
||||
IMFS_types_union info;
|
||||
|
||||
IMFS_get_token( token, new_name, &result );
|
||||
|
||||
@@ -28,7 +28,7 @@ int IMFS_symlink(
|
||||
{
|
||||
IMFS_types_union info;
|
||||
IMFS_jnode_t *new_node;
|
||||
char new_name[ NAME_MAX + 1 ];
|
||||
char new_name[ IMFS_NAME_MAX + 1 ];
|
||||
int i;
|
||||
|
||||
/*
|
||||
|
||||
@@ -32,12 +32,16 @@
|
||||
|
||||
Chain_Control rtems_filesystem_mount_table_control;
|
||||
|
||||
#include "imfs.h"
|
||||
|
||||
/* XXX this structure should be in an IMFS specific file */
|
||||
/* XXX this structure should use real constants */
|
||||
|
||||
rtems_filesystem_limits_and_options_t IMFS_LIMITS_AND_OPTIONS = {
|
||||
5, /* link_max */
|
||||
6, /* max_canon */
|
||||
7, /* max_input */
|
||||
255, /* name_max */
|
||||
IMFS_NAME_MAX, /* name_max */
|
||||
255, /* path_max */
|
||||
2, /* pipe_buf */
|
||||
1, /* posix_async_io */
|
||||
|
||||
@@ -125,26 +125,32 @@ typedef union {
|
||||
IMFS_memfile_t file;
|
||||
} IMFS_types_union;
|
||||
|
||||
/*
|
||||
* Maximum length of a "basename" of an IMFS file/node.
|
||||
*/
|
||||
|
||||
#define IMFS_NAME_MAX 32
|
||||
|
||||
/*
|
||||
* The control structure for an IMFS jnode.
|
||||
*/
|
||||
|
||||
struct IMFS_jnode_tt {
|
||||
Chain_Node Node; /* for chaining them together */
|
||||
IMFS_jnode_t *Parent; /* Parent node */
|
||||
char name[NAME_MAX+1]; /* "basename" */
|
||||
mode_t st_mode; /* File mode */
|
||||
nlink_t st_nlink; /* Link count */
|
||||
ino_t st_ino; /* inode */
|
||||
Chain_Node Node; /* for chaining them together */
|
||||
IMFS_jnode_t *Parent; /* Parent node */
|
||||
char name[IMFS_NAME_MAX+1]; /* "basename" */
|
||||
mode_t st_mode; /* File mode */
|
||||
nlink_t st_nlink; /* Link count */
|
||||
ino_t st_ino; /* inode */
|
||||
|
||||
uid_t st_uid; /* User ID of owner */
|
||||
gid_t st_gid; /* Group ID of owner */
|
||||
uid_t st_uid; /* User ID of owner */
|
||||
gid_t st_gid; /* Group ID of owner */
|
||||
|
||||
time_t st_atime; /* Time of last access */
|
||||
time_t st_mtime; /* Time of last modification */
|
||||
time_t st_ctime; /* Time of last status change */
|
||||
IMFS_jnode_types_t type; /* Type of this entry */
|
||||
IMFS_types_union info;
|
||||
time_t st_atime; /* Time of last access */
|
||||
time_t st_mtime; /* Time of last modification */
|
||||
time_t st_ctime; /* Time of last status change */
|
||||
IMFS_jnode_types_t type; /* Type of this entry */
|
||||
IMFS_types_union info;
|
||||
};
|
||||
|
||||
#define IMFS_update_atime( _jnode ) \
|
||||
|
||||
@@ -51,7 +51,7 @@ IMFS_jnode_t *IMFS_create_node(
|
||||
|
||||
node->st_nlink = 1;
|
||||
node->type = type;
|
||||
strncpy( node->name, name, NAME_MAX );
|
||||
strncpy( node->name, name, IMFS_NAME_MAX );
|
||||
|
||||
/*
|
||||
* Fill in the mode and permission information for the jnode structure.
|
||||
|
||||
@@ -277,7 +277,7 @@ int IMFS_evaluate_for_make(
|
||||
int i = 0;
|
||||
int len;
|
||||
IMFS_token_types type;
|
||||
char token[ NAME_MAX + 1 ];
|
||||
char token[ IMFS_NAME_MAX + 1 ];
|
||||
rtems_filesystem_location_info_t newloc;
|
||||
IMFS_jnode_t *node;
|
||||
int done = 0;
|
||||
@@ -467,7 +467,7 @@ int IMFS_eval_path(
|
||||
int i = 0;
|
||||
int len;
|
||||
IMFS_token_types type = IMFS_CURRENT_DIR;
|
||||
char token[ NAME_MAX + 1 ];
|
||||
char token[ IMFS_NAME_MAX + 1 ];
|
||||
rtems_filesystem_location_info_t newloc;
|
||||
IMFS_jnode_t *node;
|
||||
int result;
|
||||
|
||||
@@ -32,11 +32,11 @@ IMFS_token_types IMFS_get_token(
|
||||
* Copy a name into token. (Remember NULL is a token.)
|
||||
*/
|
||||
|
||||
while ( !IMFS_is_separator( path[i] ) && (i <= NAME_MAX) ) {
|
||||
while ( !IMFS_is_separator( path[i] ) && (i <= IMFS_NAME_MAX) ) {
|
||||
|
||||
token[i] = path[i];
|
||||
|
||||
if (i == NAME_MAX)
|
||||
if (i == IMFS_NAME_MAX)
|
||||
return IMFS_INVALID_TOKEN;
|
||||
|
||||
if ( !IMFS_is_valid_name_char( token[i] ) )
|
||||
|
||||
@@ -28,7 +28,7 @@ int IMFS_link(
|
||||
{
|
||||
IMFS_types_union info;
|
||||
IMFS_jnode_t *new_node;
|
||||
char new_name[ NAME_MAX + 1 ];
|
||||
char new_name[ IMFS_NAME_MAX + 1 ];
|
||||
int i;
|
||||
|
||||
/*
|
||||
|
||||
@@ -35,7 +35,7 @@ int IMFS_mknod(
|
||||
IMFS_token_types type = 0;
|
||||
IMFS_jnode_t *new_node;
|
||||
int result;
|
||||
char new_name[ NAME_MAX + 1 ];
|
||||
char new_name[ IMFS_NAME_MAX + 1 ];
|
||||
IMFS_types_union info;
|
||||
|
||||
IMFS_get_token( token, new_name, &result );
|
||||
|
||||
@@ -28,7 +28,7 @@ int IMFS_symlink(
|
||||
{
|
||||
IMFS_types_union info;
|
||||
IMFS_jnode_t *new_node;
|
||||
char new_name[ NAME_MAX + 1 ];
|
||||
char new_name[ IMFS_NAME_MAX + 1 ];
|
||||
int i;
|
||||
|
||||
/*
|
||||
|
||||
Reference in New Issue
Block a user