diff options
-rw-r--r-- | src/lib/ethumb/ethumb.c | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/src/lib/ethumb/ethumb.c b/src/lib/ethumb/ethumb.c index 5104b0fae..f1c5466be 100644 --- a/src/lib/ethumb/ethumb.c +++ b/src/lib/ethumb/ethumb.c @@ -698,13 +698,17 @@ _ethumb_build_absolute_path(const char *path, char buf[PATH_MAX]) p = buf; if (path[0] == '/') - strcpy(p, path); + { + strncpy(p, path, PATH_MAX - 1); + p[PATH_MAX - 1] = 0; + } else if (path[0] == '~') { const char *home = getenv("HOME"); if (!home) return NULL; - strcpy(p, home); + strncpy(p, home, PATH_MAX - 1); + p[PATH_MAX - 1] = 0; len = strlen(p); p += len; p[0] = '/'; @@ -719,7 +723,8 @@ _ethumb_build_absolute_path(const char *path, char buf[PATH_MAX]) p += len; p[0] = '/'; p++; - strcpy(p, path); + strncpy(p, path, PATH_MAX - 1 - len - 1); + p[PATH_MAX - 1 - len - 1] = 0; } return buf; |