diff options
Diffstat (limited to 'src/afb-trace.c')
-rw-r--r-- | src/afb-trace.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/src/afb-trace.c b/src/afb-trace.c index dd6e863c..e7ae9fc0 100644 --- a/src/afb-trace.c +++ b/src/afb-trace.c @@ -687,10 +687,12 @@ static void hook_api_rootdir_get_fd(void *closure, const struct afb_hookid *hook { char path[PATH_MAX], proc[100]; const char *key, *val; + ssize_t s; if (result >= 0) { snprintf(proc, sizeof proc, "/proc/self/fd/%d", result); - readlink(proc, path, sizeof path); + s = readlink(proc, path, sizeof path); + path[s < 0 ? 0 : s >= sizeof path ? sizeof path - 1 : s] = 0; key = "path"; val = path; } else { @@ -705,10 +707,12 @@ static void hook_api_rootdir_open_locale(void *closure, const struct afb_hookid { char path[PATH_MAX], proc[100]; const char *key, *val; + ssize_t s; if (result >= 0) { snprintf(proc, sizeof proc, "/proc/self/fd/%d", result); - readlink(proc, path, sizeof path); + s = readlink(proc, path, sizeof path); + path[s < 0 ? 0 : s >= sizeof path ? sizeof path - 1 : s] = 0; key = "path"; val = path; } else { |