From: Daan De Meyer Date: Wed, 14 May 2025 13:33:36 +0000 (+0200) Subject: blockdev-util: Remove dependency on string-util.h X-Git-Tag: v258-rc1~622 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=bdcd47a2698154341fbe8bb73e2f66e1a881ae0e;p=thirdparty%2Fsystemd.git 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. --- 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. */