Openwrt/tools/firmware-utils/src/utils.h
Petr Štetiar 61b36ee9ba firmware-utils: mkfwimage: fix memcpy and strncpy usage
Firmware is binary blob, so there are barely any NULL terminated strings
expected, so we should probably convert all chars into u8 types, and
after that it's clear, that using strcpy doesn't make sense anymore.

This is rather theoretical stuff, but `uint8_t name[PART_NAME_LENGTH]`
means, that you can supply PART_NAME_LENGTH sized name, not
PART_NAME_LENGTH-1 name when NULL terminated.

Ref: https://github.com/openwrt/openwrt/pull/2274
Fixes: 04cb651376 ("firmware-utils: mkfwimage: fix more errors reported by gcc-6/7/9")
Signed-off-by: Petr Štetiar <ynezz@true.cz>
2020-07-11 13:33:28 +02:00

12 lines
287 B
C

#include <stdint.h>
#include <string.h>
#pragma once
#define FW_MEMCPY_STR(dst, src) \
do { \
size_t slen = strlen(src); \
size_t dlen = sizeof(dst); \
memcpy(dst, src, slen > dlen ? dlen : slen); \
} while (0);