mirror of
https://github.com/apache/nuttx-apps.git
synced 2025-07-05 11:20:00 +08:00
NSH library: malloc/free IOBUFFER instead of using stack
This commit is contained in:
parent
a2600cbe83
commit
03ec268ef9
@ -889,4 +889,6 @@
|
|||||||
* apps/system/nxplayer/nxplayer.c: Complilation failure in one
|
* apps/system/nxplayer/nxplayer.c: Complilation failure in one
|
||||||
configuration reported by Manuel Stuhn (2014-4-21).
|
configuration reported by Manuel Stuhn (2014-4-21).
|
||||||
* apps/system/sdcard: Remove an STM32 dependency. From Bob Doiron
|
* apps/system/sdcard: Remove an STM32 dependency. From Bob Doiron
|
||||||
(2014-4-21)
|
(2014-4-21).
|
||||||
|
* apps/nshlib: malloc/free IOBUFFER for 'cat' and 'hexdump' commands
|
||||||
|
instead of using the stack. From Bob Doiron (2014-4-21).
|
@ -373,7 +373,7 @@ int cmd_xd(FAR struct nsh_vtbl_s *vtbl, int argc, char **argv)
|
|||||||
#ifndef CONFIG_NSH_DISABLE_HEXDUMP
|
#ifndef CONFIG_NSH_DISABLE_HEXDUMP
|
||||||
int cmd_hexdump(FAR struct nsh_vtbl_s *vtbl, int argc, char **argv)
|
int cmd_hexdump(FAR struct nsh_vtbl_s *vtbl, int argc, char **argv)
|
||||||
{
|
{
|
||||||
uint8_t buffer[IOBUFFERSIZE];
|
FAR uint8_t *buffer;
|
||||||
char msg[32];
|
char msg[32];
|
||||||
off_t position;
|
off_t position;
|
||||||
int fd;
|
int fd;
|
||||||
@ -394,6 +394,13 @@ int cmd_hexdump(FAR struct nsh_vtbl_s *vtbl, int argc, char **argv)
|
|||||||
return ERROR;
|
return ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
buffer = (FAR uint8_t *)malloc(IOBUFFERSIZE);
|
||||||
|
if(buffer == NULL)
|
||||||
|
{
|
||||||
|
nsh_output(vtbl, g_fmtcmdfailed, "hexdump", "malloc", NSH_ERRNO);
|
||||||
|
return ERROR;
|
||||||
|
}
|
||||||
|
|
||||||
#ifdef CONFIG_NSH_CMDOPT_HEXDUMP
|
#ifdef CONFIG_NSH_CMDOPT_HEXDUMP
|
||||||
for (x = 2; x < argc; x++)
|
for (x = 2; x < argc; x++)
|
||||||
{
|
{
|
||||||
@ -489,6 +496,7 @@ int cmd_hexdump(FAR struct nsh_vtbl_s *vtbl, int argc, char **argv)
|
|||||||
}
|
}
|
||||||
|
|
||||||
(void)close(fd);
|
(void)close(fd);
|
||||||
|
free(buffer);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
@ -416,7 +416,7 @@ static int ls_recursive(FAR struct nsh_vtbl_s *vtbl, const char *dirpath,
|
|||||||
static int cat_common(FAR struct nsh_vtbl_s *vtbl, FAR const char *cmd,
|
static int cat_common(FAR struct nsh_vtbl_s *vtbl, FAR const char *cmd,
|
||||||
FAR const char *filename)
|
FAR const char *filename)
|
||||||
{
|
{
|
||||||
char buffer[IOBUFFERSIZE];
|
FAR char *buffer;
|
||||||
int fd;
|
int fd;
|
||||||
int ret = OK;
|
int ret = OK;
|
||||||
|
|
||||||
@ -429,6 +429,13 @@ static int cat_common(FAR struct nsh_vtbl_s *vtbl, FAR const char *cmd,
|
|||||||
return ERROR;
|
return ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
buffer = (FAR char *)malloc(IOBUFFERSIZE);
|
||||||
|
if(buffer == NULL)
|
||||||
|
{
|
||||||
|
nsh_output(vtbl, g_fmtcmdfailed, cmd, "malloc", NSH_ERRNO);
|
||||||
|
return ERROR;
|
||||||
|
}
|
||||||
|
|
||||||
/* And just dump it byte for byte into stdout */
|
/* And just dump it byte for byte into stdout */
|
||||||
|
|
||||||
for (;;)
|
for (;;)
|
||||||
@ -514,6 +521,7 @@ static int cat_common(FAR struct nsh_vtbl_s *vtbl, FAR const char *cmd,
|
|||||||
/* Close the input file and return the result */
|
/* Close the input file and return the result */
|
||||||
|
|
||||||
(void)close(fd);
|
(void)close(fd);
|
||||||
|
free(buffer);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
Loading…
x
Reference in New Issue
Block a user