From 3e325a3934f608ad7afb7a250e8dc82ddd9f5745 Mon Sep 17 00:00:00 2001 From: CismonX Date: Thu, 2 Jan 2025 18:53:12 +0800 Subject: [PATCH] ioctl: check if permd op is valid A bad permd op should fail ioctl() with EINVAL instead of invoking undefined behavior. --- src/backend_chromium.c | 2 +- src/backend_firefox.c | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/src/backend_chromium.c b/src/backend_chromium.c index d4f531a..2171fbf 100644 --- a/src/backend_chromium.c +++ b/src/backend_chromium.c @@ -2444,7 +2444,7 @@ bookmark_permute ( break; default: - unreachable(); + return -EINVAL; } ctx->dirty = DIRTY_LEVEL_DATA; diff --git a/src/backend_firefox.c b/src/backend_firefox.c index f34bf95..2cfe9fd 100644 --- a/src/backend_firefox.c +++ b/src/backend_firefox.c @@ -926,6 +926,8 @@ mozbm_pos_shift ( return 0; } *pos_end_ptr = pos_end; + } else if (op != BOOKMARKFS_PERMD_OP_MOVE_AFTER) { + return -EINVAL; } ++pos_start; } else { @@ -934,6 +936,8 @@ mozbm_pos_shift ( return 0; } *pos_end_ptr = pos_end; + } else if (op != BOOKMARKFS_PERMD_OP_MOVE_BEFORE) { + return -EINVAL; } --pos_start;