Fix unlikely pointer overflow in abspath * src/function.c (abspath): len is now ptrdiff_t, to avoid GCC warning about comparing signed to unsigned. It really is a pointer difference, after all. Rejigger comparision to avoid undefined behavior if dest + len is an invalid pointer.
diff --git a/src/function.c b/src/function.c index 133e33a..b4c3805 100644 --- a/src/function.c +++ b/src/function.c
@@ -2119,7 +2119,7 @@ for (start = end = name; *start != '\0'; start = end) { - size_t len; + ptrdiff_t len; /* Skip sequence of multiple path-separators. */ while (ISDIRSEP (*start)) @@ -2147,7 +2147,7 @@ if (! ISDIRSEP (dest[-1])) *dest++ = '/'; - if (dest + len >= apath_limit) + if (apath_limit - dest <= len) return NULL; dest = mempcpy (dest, start, len);