summaryrefslogtreecommitdiff
path: root/components
diff options
context:
space:
mode:
authorgeniusgogo <[email protected]>2023-08-16 15:31:36 +0800
committerGitHub <[email protected]>2023-08-16 15:31:36 +0800
commit93388f8045cfb7f1bf2ab3ca548109d35b907f4a (patch)
tree8bd076429a9f246ab88f6203f192aefda3846cdc /components
parent0bd93292b3b058ceb1c28eabfc757d993b37ac06 (diff)
fix msh exec permission denied (#7943)
Diffstat (limited to 'components')
-rw-r--r--components/finsh/msh.c17
1 files changed, 14 insertions, 3 deletions
diff --git a/components/finsh/msh.c b/components/finsh/msh.c
index 691ab55381..85fe04b8a7 100644
--- a/components/finsh/msh.c
+++ b/components/finsh/msh.c
@@ -11,6 +11,7 @@
*/
#include <rtthread.h>
#include <string.h>
+#include <errno.h>
#ifdef RT_USING_FINSH
@@ -483,7 +484,7 @@ found_program:
int msh_exec(char *cmd, rt_size_t length)
{
- int cmd_ret;
+ int cmd_ret = 0;
/* strim the beginning of command */
while ((length > 0) && (*cmd == ' ' || *cmd == '\t'))
@@ -521,7 +522,8 @@ int msh_exec(char *cmd, rt_size_t length)
#ifdef RT_USING_SMART
/* exec from msh_exec , debug = 0*/
/* _msh_exec_lwp return is pid , <= 0 means failed */
- if (_msh_exec_lwp(0, cmd, length) > 0)
+ cmd_ret = _msh_exec_lwp(0, cmd, length);
+ if (cmd_ret > 0)
{
return 0;
}
@@ -538,7 +540,16 @@ int msh_exec(char *cmd, rt_size_t length)
}
*tcmd = '\0';
}
- rt_kprintf("%s: command not found.\n", cmd);
+#ifdef RT_USING_SMART
+ if (cmd_ret == -EACCES)
+ {
+ rt_kprintf("%s: Permission denied.\n", cmd);
+ }
+ else
+#endif
+ {
+ rt_kprintf("%s: command not found.\n", cmd);
+ }
return -1;
}