On 9/5/24 3:36 PM, Scott Mayhew wrote:
It's apparently possible for the sqlite database to get corrupted and
cause one or more rows to have null in the id column.
The knfsd fix was posted here:
https://lore.kernel.org/linux-nfs/20240903111446.659884-1-lilingfeng3@xxxxxxxxxx/
nfsdcld should have a similar fix. If we encounter a client record with
a null id, just skip it instead of sending it to the kernel.
Signed-off-by: Scott Mayhew <smayhew@xxxxxxxxxx>
Committed... (tag: nfs-utils-2-7-2-rc1
steved
---
utils/nfsdcld/sqlite.c | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/utils/nfsdcld/sqlite.c b/utils/nfsdcld/sqlite.c
index 03016fb9..88636848 100644
--- a/utils/nfsdcld/sqlite.c
+++ b/utils/nfsdcld/sqlite.c
@@ -1337,6 +1337,11 @@ sqlite_iterate_recovery(int (*cb)(struct cld_client *clnt), struct cld_client *c
id_len = sqlite3_column_bytes(stmt, 0);
if (id_len > NFS4_OPAQUE_LIMIT)
id_len = NFS4_OPAQUE_LIMIT;
+ if (id_len == 0) {
+ xlog(L_ERROR, "%s: Skipping client record with null id",
+ __func__);
+ continue;
+ }
memset(&cmsg->cm_u, 0, sizeof(cmsg->cm_u));
#if UPCALL_VERSION >= 2