Message ID | 20240430052845.31039-1-liwang@redhat.com |
---|---|
State | Changes Requested |
Headers | show |
Series | [v2,1/2] lib: add SAFE_CALLOC macro | expand |
Hi! > diff --git a/include/tst_safe_macros.h b/include/tst_safe_macros.h > index 53aceb5ca..f228b99e1 100644 > --- a/include/tst_safe_macros.h > +++ b/include/tst_safe_macros.h > @@ -75,6 +75,11 @@ int safe_dup2(const char *file, const int lineno, int oldfd, int newfd); > #define SAFE_MALLOC(size) \ > safe_malloc(__FILE__, __LINE__, NULL, (size)) > > +void *safe_calloc(const char *file, const int lineno, size_t nmemb, size_t size); > + > +#define SAFE_CALLOC(nmemb, size) \ > + safe_calloc(__FILE__, __LINE__, (nmemb), (size)) > + > void *safe_realloc(const char *file, const int lineno, void *ptr, size_t size); > > #define SAFE_REALLOC(ptr, size) \ > diff --git a/lib/tst_safe_macros.c b/lib/tst_safe_macros.c > index c6e6b15dc..40fdaca76 100644 > --- a/lib/tst_safe_macros.c > +++ b/lib/tst_safe_macros.c > @@ -9,6 +9,7 @@ > #include <stdlib.h> > #include <errno.h> > #include <sched.h> > +#include <malloc.h> calloc() should be included from stdlib.h as far as I can tell malloc.h is needed for mallopt() and such. > #include <sys/ptrace.h> > #include "config.h" > #ifdef HAVE_SYS_FANOTIFY_H > @@ -546,6 +547,20 @@ int safe_dup2(const char *file, const int lineno, int oldfd, int newfd) > return rval; > } > > +void *safe_calloc(const char *file, const int lineno, size_t nmemb, size_t size) > +{ > + void *rval; > + > + rval = calloc(nmemb, size); > + > + if (rval == NULL) { > + tst_brk_(file, lineno, TBROK | TERRNO, > + "calloc(%zu, %zu) failed", nmemb, size); > + } > + > + return rval; > +} Otherwise it looks good.
diff --git a/include/tst_safe_macros.h b/include/tst_safe_macros.h index 53aceb5ca..f228b99e1 100644 --- a/include/tst_safe_macros.h +++ b/include/tst_safe_macros.h @@ -75,6 +75,11 @@ int safe_dup2(const char *file, const int lineno, int oldfd, int newfd); #define SAFE_MALLOC(size) \ safe_malloc(__FILE__, __LINE__, NULL, (size)) +void *safe_calloc(const char *file, const int lineno, size_t nmemb, size_t size); + +#define SAFE_CALLOC(nmemb, size) \ + safe_calloc(__FILE__, __LINE__, (nmemb), (size)) + void *safe_realloc(const char *file, const int lineno, void *ptr, size_t size); #define SAFE_REALLOC(ptr, size) \ diff --git a/lib/tst_safe_macros.c b/lib/tst_safe_macros.c index c6e6b15dc..40fdaca76 100644 --- a/lib/tst_safe_macros.c +++ b/lib/tst_safe_macros.c @@ -9,6 +9,7 @@ #include <stdlib.h> #include <errno.h> #include <sched.h> +#include <malloc.h> #include <sys/ptrace.h> #include "config.h" #ifdef HAVE_SYS_FANOTIFY_H @@ -546,6 +547,20 @@ int safe_dup2(const char *file, const int lineno, int oldfd, int newfd) return rval; } +void *safe_calloc(const char *file, const int lineno, size_t nmemb, size_t size) +{ + void *rval; + + rval = calloc(nmemb, size); + + if (rval == NULL) { + tst_brk_(file, lineno, TBROK | TERRNO, + "calloc(%zu, %zu) failed", nmemb, size); + } + + return rval; +} + void *safe_realloc(const char *file, const int lineno, void *ptr, size_t size) { void *ret;
Signed-off-by: Li Wang <liwang@redhat.com> --- include/tst_safe_macros.h | 5 +++++ lib/tst_safe_macros.c | 15 +++++++++++++++ 2 files changed, 20 insertions(+)