[make-initrd] [PATCH 1/3] Reimplement ueventd

Leonid Krivoshein klark.devel at gmail.com
Sun May 14 23:57:53 MSK 2023


On 5/4/23 16:42, Alexey Gladkov wrote:
> [...]
> diff --git a/datasrc/ueventd/memory.c b/datasrc/ueventd/memory.c
> new file mode 100644
> index 00000000..cb911d58
> --- /dev/null
> +++ b/datasrc/ueventd/memory.c
> @@ -0,0 +1,32 @@
> +/* SPDX-License-Identifier: GPL-2.0-or-later */
> +
> +#include <string.h>
> +#include <stdlib.h>
> +#include <stdarg.h>
> +#include <stdio.h>
> +#include <errno.h>
> +#include <error.h>
> +#include <limits.h>
> +
> +#include "ueventd.h"
> +
> +void *xcalloc(size_t nmemb, size_t size)
> +{
> +	void *r = calloc(nmemb, size);
> +	if (!r)
> +		fatal("calloc: allocating %lu*%lu bytes: %m",
> +		      (unsigned long) nmemb, (unsigned long) size);

Есть "%zu".


> +	return r;
> +}
> +
> +char *xasprintf(char **ptr, const char *fmt, ...)
> +{
> +	va_list arg;
> +
> +	va_start(arg, fmt);
> +	if (vasprintf(ptr, fmt, arg) < 0)

Здесь и

> +		fatal("vasprintf: %m");
> +	va_end(arg);
> +
> +	return *ptr;

и тут возможно разыменование ссылки на NULL, поскольку ptr в коде не 
проверяется и в заголовочном файле xasprintf() не объявлен как nonnull(1).


> +}
> [...]


-- 
WBR, Leonid Krivoshein.


More information about the Make-initrd mailing list