aboutsummaryrefslogtreecommitdiffstats
path: root/filescan-utils.c
diff options
context:
space:
mode:
Diffstat (limited to 'filescan-utils.c')
-rw-r--r--filescan-utils.c31
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));
}