From 8a5b5378e64ac780dbb8fedf7b24b63ca78b78f5 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 | 2 ++ src/db/update/Walk.cxx | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/NEWS b/NEWS index 4e52ba89b..8abcffd47 100644 --- a/NEWS +++ b/NEWS @@ -1,4 +1,6 @@ ver 0.23.16 (not yet released) +* database + - fix integer overflows with 64-bit inode numbers * support libfmt 11 * support ICU 76 diff --git a/src/db/update/Walk.cxx b/src/db/update/Walk.cxx index 4fdec28d9..14af4dd4d 100644 --- a/src/db/update/Walk.cxx +++ b/src/db/update/Walk.cxx @@ -153,7 +153,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)