diff options
| author | geniusgogo <[email protected]> | 2023-08-16 15:31:36 +0800 |
|---|---|---|
| committer | GitHub <[email protected]> | 2023-08-16 15:31:36 +0800 |
| commit | 93388f8045cfb7f1bf2ab3ca548109d35b907f4a (patch) | |
| tree | 8bd076429a9f246ab88f6203f192aefda3846cdc /components | |
| parent | 0bd93292b3b058ceb1c28eabfc757d993b37ac06 (diff) | |
fix msh exec permission denied (#7943)
Diffstat (limited to 'components')
| -rw-r--r-- | components/finsh/msh.c | 17 |
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; } |
