diff options
author | Sander Vrijders <sander.vrijders@intec.ugent.be> | 2016-07-03 16:30:19 +0200 |
---|---|---|
committer | Sander Vrijders <sander.vrijders@intec.ugent.be> | 2016-07-03 16:30:19 +0200 |
commit | aca5db11a73e66377b8566e69c1baabb1df803ab (patch) | |
tree | d1333083d2d2302b3159b91ec3f204ccbd95f8bc /src/tools/irm | |
parent | 597456c934bf0f9ec475ac89eaaf67e9a0c58c0e (diff) | |
parent | 8cb2f2fe999476b55358e3cfbdcbcbb3cf75f2cb (diff) | |
download | ouroboros-aca5db11a73e66377b8566e69c1baabb1df803ab.tar.gz ouroboros-aca5db11a73e66377b8566e69c1baabb1df803ab.zip |
Merged in dstaesse/ouroboros/be-bind-secure (pull request #151)
tools, irm: move binary check to library
Diffstat (limited to 'src/tools/irm')
-rw-r--r-- | src/tools/irm/irm_bind.c | 16 |
1 files changed, 9 insertions, 7 deletions
diff --git a/src/tools/irm/irm_bind.c b/src/tools/irm/irm_bind.c index 92ebdd8a..45da6e4c 100644 --- a/src/tools/irm/irm_bind.c +++ b/src/tools/irm/irm_bind.c @@ -22,7 +22,7 @@ #include <stdio.h> #include <string.h> -#include <sys/stat.h> +#include <errno.h> #include <ouroboros/irm.h> @@ -45,7 +45,7 @@ int do_bind(int argc, char ** argv) char * name = NULL; char * ap_name = NULL; uint16_t flags = 0; - struct stat s; + int ret = 0; while (argc > 0) { if (matches(*argv, "name") == 0) { @@ -79,15 +79,17 @@ int do_bind(int argc, char ** argv) return -1; } - if (stat(ap_name, &s) != 0) { - printf("Application %s does not exist.\n", ap_name); + ret = irm_bind(name, ap_name, flags, argc, argv); + if (ret == -ENOENT) { + printf("%s does not exist.\n", ap_name); return -1; } - if (!(s.st_mode & S_IXUSR)) { - printf("Application %s is not executable.\n", ap_name); + if (ret == -EPERM) { + printf("Cannot execute %s, please check permissions.\n", + ap_name); return -1; } - return irm_bind(name, ap_name, flags, argc, argv); + return ret; } |