From c343a5b6adbcf7bf9b691a6a0642fdcd769c573f Mon Sep 17 00:00:00 2001 From: Paul Eggert Date: Sun, 1 Aug 2021 17:38:29 -0700 Subject: [PATCH] pagalign_alloc: improve -fanalyzer malloc checking --- ChangeLog | 2 +- lib/pagealign_alloc.h | 17 ++++++++++------- 2 files changed, 11 insertions(+), 8 deletions(-) diff --git a/ChangeLog b/ChangeLog index f130f9317e..e3573cee27 100644 --- a/ChangeLog +++ b/ChangeLog @@ -4,7 +4,7 @@ * lib/backup-internal.h, lib/backupfile.h: * lib/canonicalize.h, lib/dfa.h, lib/dirname.h, lib/exclude.h: * lib/filenamecat.h, lib/malloca.h, lib/modechange.h: - * lib/mountlist.h: + * lib/mountlist.h, lib/pagealign_alloc.h: Add malloc-related attributes and include stdlib.h as needed. * lib/dfa.c: Include verify.h. (assume_nonnull): New macro. diff --git a/lib/pagealign_alloc.h b/lib/pagealign_alloc.h index 387d5aa045..eb2d4e0df2 100644 --- a/lib/pagealign_alloc.h +++ b/lib/pagealign_alloc.h @@ -20,6 +20,12 @@ # include +/* Free a memory block. + PTR must be a non-NULL pointer returned by pagealign_alloc or + pagealign_xalloc. */ +extern void pagealign_free (void *ptr) + _GL_ATTRIBUTE_NONNULL ((1)); + /* Allocate a block of memory of SIZE bytes, aligned on a system page boundary. If SIZE is not a multiple of the system page size, it will be rounded up @@ -27,16 +33,13 @@ Return a pointer to the start of the memory block. Upon allocation failure, return NULL and set errno. */ extern void *pagealign_alloc (size_t size) - _GL_ATTRIBUTE_MALLOC _GL_ATTRIBUTE_ALLOC_SIZE ((1)); + _GL_ATTRIBUTE_MALLOC _GL_ATTRIBUTE_DEALLOC (pagealign_free, 1) + _GL_ATTRIBUTE_ALLOC_SIZE ((1)); /* Like pagealign_alloc, except it exits the program if the allocation fails. */ extern void *pagealign_xalloc (size_t size) - _GL_ATTRIBUTE_MALLOC _GL_ATTRIBUTE_ALLOC_SIZE ((1)); - -/* Free a memory block. - PTR must be a non-NULL pointer returned by pagealign_alloc or - pagealign_xalloc. */ -extern void pagealign_free (void *ptr); + _GL_ATTRIBUTE_MALLOC _GL_ATTRIBUTE_DEALLOC (pagealign_free, 1) + _GL_ATTRIBUTE_ALLOC_SIZE ((1)) _GL_ATTRIBUTE_RETURNS_NONNULL; #endif /* _PAGEALIGN_ALLOC_H */ -- 2.39.5