From bdcd47a2698154341fbe8bb73e2f66e1a881ae0e Mon Sep 17 00:00:00 2001 From: Daan De Meyer Date: Wed, 14 May 2025 15:33:36 +0200 Subject: [PATCH] blockdev-util: Remove dependency on string-util.h Let's insist on a string literal in SYS_BLOCK_PATH_MAX() so that we don't accidentally allocate VLAs and let's inline strempty() in xsprintf_sys_block_path() so we don't need to include string-util.h in blockdev-util.h We'll remove the actual string-util.h include as part of #37344. --- src/shared/blockdev-util.c | 4 ++-- src/shared/blockdev-util.h | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/shared/blockdev-util.c b/src/shared/blockdev-util.c index fc3c3e7d143..b5c82aaccd6 100644 --- a/src/shared/blockdev-util.c +++ b/src/shared/blockdev-util.c @@ -542,7 +542,7 @@ static int blockdev_is_encrypted(const char *sysfs_path, unsigned depth_left) { } int fd_is_encrypted(int fd) { - char p[SYS_BLOCK_PATH_MAX(NULL)]; + char p[SYS_BLOCK_PATH_MAX("")]; dev_t devt; int r; @@ -558,7 +558,7 @@ int fd_is_encrypted(int fd) { } int path_is_encrypted(const char *path) { - char p[SYS_BLOCK_PATH_MAX(NULL)]; + char p[SYS_BLOCK_PATH_MAX("")]; dev_t devt; int r; diff --git a/src/shared/blockdev-util.h b/src/shared/blockdev-util.h index d0b72c6c230..df52d78c59e 100644 --- a/src/shared/blockdev-util.h +++ b/src/shared/blockdev-util.h @@ -10,9 +10,9 @@ #include "string-util.h" #define SYS_BLOCK_PATH_MAX(suffix) \ - (STRLEN("/sys/dev/block/") + DECIMAL_STR_MAX(dev_t) + 1 + DECIMAL_STR_MAX(dev_t) + strlen_ptr(suffix)) + (STRLEN("/sys/dev/block/") + DECIMAL_STR_MAX(dev_t) + 1 + DECIMAL_STR_MAX(dev_t) + STRLEN(suffix)) #define xsprintf_sys_block_path(buf, suffix, devno) \ - xsprintf(buf, "/sys/dev/block/%u:%u%s", major(devno), minor(devno), strempty(suffix)) + xsprintf(buf, "/sys/dev/block/%u:%u%s", major(devno), minor(devno), suffix ?: "") typedef enum BlockDeviceLookupFlag { BLOCK_DEVICE_LOOKUP_WHOLE_DISK = 1 << 0, /* whole block device, e.g. sda, nvme0n1, or loop0. */ -- 2.47.3