mirror of
https://github.com/systemd/systemd.git
synced 2024-11-06 16:59:03 +03:00
shared/dm-util: use strncpy_exact() to silence gcc
With gcc-9.1.1-2.fc31.x86_64 and -Doptimization=2: ../src/shared/dm-util.c: In function ‘dm_deferred_remove’: ../src/shared/dm-util.c:35:9: warning: ‘strncpy’ specified bound 128 equals destination size [-Wstringop-truncation] 35 | strncpy(dm.name, name, sizeof(dm.name)); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ gcc is plain wrong here, because we checked strlen(name) a few lines above, so there can be no truncation and even the terminator always fits. But let's avoid the warning.
This commit is contained in:
parent
f34635bcda
commit
706fb34851
@ -5,6 +5,7 @@
|
||||
|
||||
#include "dm-util.h"
|
||||
#include "fd-util.h"
|
||||
#include "string-util.h"
|
||||
|
||||
int dm_deferred_remove(const char *name) {
|
||||
|
||||
@ -25,14 +26,14 @@ int dm_deferred_remove(const char *name) {
|
||||
/* Unfortunately, libcryptsetup doesn't provide a proper API for this, hence call the ioctl()
|
||||
* directly. */
|
||||
|
||||
if (strlen(name) > sizeof(dm.name)-1)
|
||||
if (strlen(name) >= sizeof(dm.name))
|
||||
return -ENODEV; /* A device with a name longer than this cannot possibly exist */
|
||||
|
||||
fd = open("/dev/mapper/control", O_RDWR|O_CLOEXEC);
|
||||
if (fd < 0)
|
||||
return -errno;
|
||||
|
||||
strncpy(dm.name, name, sizeof(dm.name));
|
||||
strncpy_exact(dm.name, name, sizeof(dm.name));
|
||||
|
||||
if (ioctl(fd, DM_DEV_REMOVE, &dm))
|
||||
return -errno;
|
||||
|
Loading…
Reference in New Issue
Block a user