]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
iovec-util: make IOVEC_MAKE_STRING() safer
authorLennart Poettering <lennart@poettering.net>
Thu, 19 Oct 2023 14:30:23 +0000 (16:30 +0200)
committerLennart Poettering <lennart@poettering.net>
Fri, 20 Oct 2023 08:43:50 +0000 (10:43 +0200)
Let's not accept arbitrary types, but only char* and const char*.

src/basic/iovec-util.h

index d46455371b1cc9991dc0b11ccfc50281ad0d8845..245c61601767f9b0f552672cfcfe9776f8c7abb4 100644 (file)
@@ -35,10 +35,10 @@ static inline bool IOVEC_INCREMENT(struct iovec *i, size_t n, size_t k) {
 #define IOVEC_NULL (const struct iovec) {}
 
 #define IOVEC_MAKE(base, len) (struct iovec) { .iov_base = (base), .iov_len = (len) }
-#define IOVEC_MAKE_STRING(string)               \
-        ({                                      \
-                char *_s = (char*) (string);    \
-                IOVEC_MAKE(_s, strlen(_s));     \
+#define IOVEC_MAKE_STRING(string)                       \
+        ({                                              \
+                const char *_s = (string);              \
+                IOVEC_MAKE((char*) _s, strlen(_s));     \
         })
 
 char* set_iovec_string_field(struct iovec *iovec, size_t *n_iovec, const char *field, const char *value);