diff options
author | Romain Forlot <romain.forlot@iot.bzh> | 2017-09-08 17:21:40 +0200 |
---|---|---|
committer | Romain Forlot <romain.forlot@iot.bzh> | 2017-09-08 17:21:40 +0200 |
commit | f352a03a19ebe8a013a96387ec2cd28b98ca0695 (patch) | |
tree | 6c41a482b5c4cf4792cd2ba455558acedcfa9bd6 /filescan-utils.c | |
parent | 691f6397954929689a1e9434e31940192c2358bc (diff) |
Only return binding root dir.
If subdirs path is needed then concatenation as to be done
using the rootdir.
Change-Id: I50a1eeb1f853ae26995a96e1661ff38cb7959f60
Signed-off-by: Romain Forlot <romain.forlot@iot.bzh>
Diffstat (limited to 'filescan-utils.c')
-rw-r--r-- | filescan-utils.c | 31 |
1 files changed, 5 insertions, 26 deletions
diff --git a/filescan-utils.c b/filescan-utils.c index fe01bdc..83565b2 100644 --- a/filescan-utils.c +++ b/filescan-utils.c @@ -126,42 +126,21 @@ PUBLIC const char *GetBinderName() { PUBLIC const char *GetBindingDirPath(BindingDirsT dir) { // A file description should not be greater than 999.999.999 - char fd[10]; - static char retdir[CONTROL_MAXPATH_LEN]; - sprintf(fd, "%d", afb_daemon_rootdir_get_fd()); - char* fd_link = malloc(strlen("/proc/self/fd/") + strlen(fd)); - strcpy(fd_link, "/proc/self/fd/"); - strcat(fd_link, fd); + char fd_link[CONTROL_MAXPATH_LEN]; + char retdir[CONTROL_MAXPATH_LEN]; + sprintf(fd_link, "/proc/self/fd/%d", afb_daemon_rootdir_get_fd()); ssize_t len; if((len = readlink(fd_link, retdir, sizeof(retdir)-1)) == -1) { perror("lstat"); AFB_ERROR("Error reading stat of link: %s", fd_link); - strcpy(retdir, "/tmp"); + strncpy(retdir, "/tmp", 4); } else { retdir[len] = '\0'; - switch (dir) { - case BIN_DIR: - strcat(retdir, "/bin"); - break; - case ETC_DIR: - strcat(retdir, "/etc"); - break; - case LIB_DIR: - strcat(retdir, "/lib"); - break; - case DATA_DIR: - strcat(retdir, "/data"); - break; - case HTTP_DIR: - strcat(retdir, "/http"); - break; - } } - free(fd_link); - return retdir; + return strndup(retdir, sizeof(retdir)); } |