From: Jaroslav Kysela Date: Fri, 9 Oct 2015 15:03:19 +0000 (+0200) Subject: deferred_unlink: fix for very long filenames, fixes #3136 X-Git-Tag: v4.2.1~1952 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=1ffad11881c63db416f2ee957740ab1a29d145b7;p=thirdparty%2Ftvheadend.git deferred_unlink: fix for very long filenames, fixes #3136 --- diff --git a/src/utils.c b/src/utils.c index 23ea46d6a..4da475119 100644 --- a/src/utils.c +++ b/src/utils.c @@ -702,13 +702,20 @@ deferred_unlink(const char *filename, const char *rootdir) char *s; size_t l; int r; + long max; l = strlen(filename); s = malloc(l + 9 + 1); if (s == NULL) return -ENOMEM; + max = pathconf(filename, _PC_NAME_MAX); strcpy(s, filename); - strcpy(s + l, ".removing"); + if (l + 10 < max) { + s[0] = '.'; + strcpy(s + l, ".removing"); + } else { + memcpy(s, ".rm.", 4); + } r = rename(filename, s); if (r) { r = -errno;