diff options
author | dimitri staessens <dimitri.staessens@intec.ugent.be> | 2016-07-03 14:57:04 +0200 |
---|---|---|
committer | dimitri staessens <dimitri.staessens@intec.ugent.be> | 2016-07-03 14:57:04 +0200 |
commit | 5a2123471a4b4a2bd8ee260879a207aebd5d1441 (patch) | |
tree | ddd0a2c6b620eeaedf85709f948f4b465b55299e /src/tools/irm | |
parent | d2a7cb2d27dab595bd2948ad3724016ca948e61e (diff) | |
download | ouroboros-5a2123471a4b4a2bd8ee260879a207aebd5d1441.tar.gz ouroboros-5a2123471a4b4a2bd8ee260879a207aebd5d1441.zip |
irmd, tools: checks on binary
The bind tool and the auto_execute function will check if the binary
exists and is executable.
Return value of auto_execute corrected to pid_t
Diffstat (limited to 'src/tools/irm')
-rw-r--r-- | src/tools/irm/irm_bind.c | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/src/tools/irm/irm_bind.c b/src/tools/irm/irm_bind.c index 85e5bd3d..3fc1d5c5 100644 --- a/src/tools/irm/irm_bind.c +++ b/src/tools/irm/irm_bind.c @@ -22,6 +22,7 @@ #include <stdio.h> #include <string.h> +#include <sys/stat.h> #include <ouroboros/irm.h> @@ -44,6 +45,7 @@ int do_bind(int argc, char ** argv) char * name = NULL; char * ap_name = NULL; uint16_t flags = 0; + struct stat s; while (argc > 0) { if (matches(*argv, "name") == 0) { @@ -77,5 +79,15 @@ int do_bind(int argc, char ** argv) return -1; } + if (stat(ap_name, &s) != 0) { + printf("Application %s does not exist.\n\n", ap_name); + return -1; + } + + if (!(s.st_mode & S_IXUSR)) { + printf("Application %s is not executable.\n\n", ap_name); + return -1; + } + return irm_bind(name, ap_name, flags, argc, argv); } |