From 7b6909f2c0dc82e39ba03ed0bf7d06f9fa62d5bf Mon Sep 17 00:00:00 2001 From: Marius Feraru Date: Mon, 4 Mar 2024 13:21:40 +0200 Subject: [PATCH] db/update/Walk:FindAncestorLoop: uint64_t inode & device Previously, inode numbers were truncated to 32 bits, which could lead to problems on XFS where inodes are 64 bit; this could lead to bogus "recursive directory found" errors during database update. [mk: added commit description and NEWS line] Closes https://github.com/MusicPlayerDaemon/MPD/issues/2000 --- NEWS | 1 + src/db/update/Walk.cxx | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/NEWS b/NEWS index c5afc7c42..f41ae404e 100644 --- a/NEWS +++ b/NEWS @@ -16,6 +16,7 @@ ver 0.24 (not yet released) - "sticker find" supports sort and window parameter and new sticker compare operators "eq", "lt" and "gt" * database - attribute "added" shows when each song was added to the database + - fix integer overflows with 64-bit inode numbers - proxy: require MPD 0.21 or later - proxy: require libmpdclient 2.15 or later * archive diff --git a/src/db/update/Walk.cxx b/src/db/update/Walk.cxx index 9653fffeb..cafda30e0 100644 --- a/src/db/update/Walk.cxx +++ b/src/db/update/Walk.cxx @@ -148,7 +148,7 @@ update_directory_stat(Storage &storage, Directory &directory) noexcept */ static int FindAncestorLoop(Storage &storage, Directory *parent, - unsigned inode, unsigned device) noexcept + uint64_t inode, uint64_t device) noexcept { #ifndef _WIN32 if (device == 0 && inode == 0)