Re: [PATCH v7 00/10] livepatch: klp-convert tool

From: Alexey Dobriyan
Date: Thu Mar 30 2023 - 08:10:11 EST


Joe Lawrence wrote:
> +static int update_strtab(struct elf *elf)
> +{
>
> + buf = malloc(new_size);
> + if (!buf) {
> + WARN("malloc failed");
> + return -1;
> + }
> + memcpy(buf, (void *)strtab->data, orig_size);

This code is called realloc(). :-)

> +static int write_file(struct elf *elf, const char *file)
> +{
>
> + fd = creat(file, 0664);
> + e = elf_begin(fd, ELF_C_WRITE, NULL);

elf_end() doesn't close descriptor, so there is potentially corrupted
data. There is no unlink() call if writes fail as well.

> +void elf_close(struct elf *elf)
> +{
> +
> + if (elf->fd > 0)
> + close(elf->fd);

Techically, it is "fd >= 0".

> +filechk_klp_map = \
> + echo "klp-convert-symbol-data.0.1"; \
> + echo "*vmlinux"; \
> + $(NM) -f posix vmlinux | cut -d\ -f1; \
> + sort $(MODORDER) $(MODULES_LIVEPATCH) | \

This probably should be "LC_ALL=C sort" for speed and reproducibility (?).