Use safer allocation macros
Use of these macros, apart from the benefits mentioned in the commit that adds the macros, has some other good side effects: - Consistency in getting the size of the object from sizeof(type), instead of a mix of sizeof(type) sometimes and sizeof(*p) other times. - More readable code: no casts, and no sizeof(), so also shorter lines that we don't need to cut. - Consistency in using array allocation calls for allocations of arrays of objects, even when the object size is 1. Cc: Valentin V. Bartenev <vbartenev@gmail.com> Signed-off-by: Alejandro Colomar <alx@kernel.org>
This commit is contained in:
committed by
Serge Hallyn
parent
6e58c12752
commit
efbbcade43
@@ -21,6 +21,8 @@
|
||||
#include <errno.h>
|
||||
#include <stdio.h>
|
||||
#include <signal.h>
|
||||
|
||||
#include "alloc.h"
|
||||
#include "nscd.h"
|
||||
#include "sssd.h"
|
||||
#ifdef WITH_TCB
|
||||
@@ -240,11 +242,11 @@ int commonio_lock_nowait (struct commonio_db *db, bool log)
|
||||
}
|
||||
file_len = strlen(db->filename) + 11;/* %lu max size */
|
||||
lock_file_len = strlen(db->filename) + 6; /* sizeof ".lock" */
|
||||
file = (char*)malloc(file_len);
|
||||
file = MALLOCARRAY(file_len, char);
|
||||
if (file == NULL) {
|
||||
goto cleanup_ENOMEM;
|
||||
}
|
||||
lock = (char*)malloc(lock_file_len);
|
||||
lock = MALLOCARRAY(lock_file_len, char);
|
||||
if (lock == NULL) {
|
||||
goto cleanup_ENOMEM;
|
||||
}
|
||||
@@ -513,7 +515,7 @@ int commonio_open (struct commonio_db *db, int mode)
|
||||
fcntl (fileno (db->fp), F_SETFD, FD_CLOEXEC);
|
||||
|
||||
buflen = BUFLEN;
|
||||
buf = (char *) malloc (buflen);
|
||||
buf = MALLOCARRAY (buflen, char);
|
||||
if (NULL == buf) {
|
||||
goto cleanup_ENOMEM;
|
||||
}
|
||||
@@ -524,7 +526,7 @@ int commonio_open (struct commonio_db *db, int mode)
|
||||
size_t len;
|
||||
|
||||
buflen += BUFLEN;
|
||||
cp = (char *) realloc (buf, buflen);
|
||||
cp = REALLOCARRAY (buf, buflen, char);
|
||||
if (NULL == cp) {
|
||||
goto cleanup_buf;
|
||||
}
|
||||
@@ -558,7 +560,7 @@ int commonio_open (struct commonio_db *db, int mode)
|
||||
}
|
||||
}
|
||||
|
||||
p = (struct commonio_entry *) malloc (sizeof *p);
|
||||
p = MALLOC (struct commonio_entry);
|
||||
if (NULL == p) {
|
||||
goto cleanup_entry;
|
||||
}
|
||||
@@ -635,7 +637,7 @@ commonio_sort (struct commonio_db *db, int (*cmp) (const void *, const void *))
|
||||
return 0;
|
||||
}
|
||||
|
||||
entries = mallocarray (n, sizeof (struct commonio_entry *));
|
||||
entries = MALLOCARRAY (n, struct commonio_entry *);
|
||||
if (entries == NULL) {
|
||||
return -1;
|
||||
}
|
||||
@@ -954,7 +956,7 @@ int commonio_update (struct commonio_db *db, const void *eptr)
|
||||
return 1;
|
||||
}
|
||||
/* not found, new entry */
|
||||
p = (struct commonio_entry *) malloc (sizeof *p);
|
||||
p = MALLOC (struct commonio_entry);
|
||||
if (NULL == p) {
|
||||
db->ops->free (nentry);
|
||||
errno = ENOMEM;
|
||||
@@ -991,7 +993,7 @@ int commonio_append (struct commonio_db *db, const void *eptr)
|
||||
return 0;
|
||||
}
|
||||
/* new entry */
|
||||
p = (struct commonio_entry *) malloc (sizeof *p);
|
||||
p = MALLOC (struct commonio_entry);
|
||||
if (NULL == p) {
|
||||
db->ops->free (nentry);
|
||||
errno = ENOMEM;
|
||||
|
||||
@@ -21,8 +21,11 @@
|
||||
#ifdef USE_ECONF
|
||||
#include <libeconf.h>
|
||||
#endif
|
||||
|
||||
#include "alloc.h"
|
||||
#include "getdef.h"
|
||||
#include "shadowlog_internal.h"
|
||||
|
||||
/*
|
||||
* A configuration item definition.
|
||||
*/
|
||||
@@ -445,14 +448,14 @@ void setdef_config_file (const char* file)
|
||||
char* cp;
|
||||
|
||||
len = strlen(file) + strlen(sysconfdir) + 2;
|
||||
cp = malloc(len);
|
||||
cp = MALLOCARRAY(len, char);
|
||||
if (cp == NULL)
|
||||
exit (13);
|
||||
snprintf(cp, len, "%s/%s", file, sysconfdir);
|
||||
sysconfdir = cp;
|
||||
#ifdef VENDORDIR
|
||||
len = strlen(file) + strlen(vendordir) + 2;
|
||||
cp = malloc(len);
|
||||
cp = MALLOCARRAY(len, char);
|
||||
if (cp == NULL)
|
||||
exit (13);
|
||||
snprintf(cp, len, "%s/%s", file, vendordir);
|
||||
|
||||
@@ -15,6 +15,7 @@
|
||||
#include <assert.h>
|
||||
#include <stdio.h>
|
||||
|
||||
#include "alloc.h"
|
||||
#include "prototypes.h"
|
||||
#include "defines.h"
|
||||
#include "commonio.h"
|
||||
@@ -311,7 +312,7 @@ static /*@null@*/struct commonio_entry *merge_group_entries (
|
||||
|
||||
/* Concatenate the 2 lines */
|
||||
new_line_len = strlen (gr1->line) + strlen (gr2->line) +1;
|
||||
new_line = (char *)malloc (new_line_len + 1);
|
||||
new_line = MALLOCARRAY (new_line_len + 1, char);
|
||||
if (NULL == new_line) {
|
||||
return NULL;
|
||||
}
|
||||
@@ -332,7 +333,7 @@ static /*@null@*/struct commonio_entry *merge_group_entries (
|
||||
members++;
|
||||
}
|
||||
}
|
||||
new_members = (char **)calloc ( (members+1), sizeof(char*) );
|
||||
new_members = CALLOC (members + 1, char *);
|
||||
if (NULL == new_members) {
|
||||
free (new_line);
|
||||
return NULL;
|
||||
@@ -393,7 +394,7 @@ static int split_groups (unsigned int max_members)
|
||||
continue;
|
||||
}
|
||||
|
||||
new = (struct commonio_entry *) malloc (sizeof *new);
|
||||
new = MALLOC (struct commonio_entry);
|
||||
if (NULL == new) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -12,6 +12,7 @@
|
||||
|
||||
#ident "$Id$"
|
||||
|
||||
#include "alloc.h"
|
||||
#include "prototypes.h"
|
||||
#include "defines.h"
|
||||
#include "groupio.h"
|
||||
@@ -21,7 +22,7 @@
|
||||
struct group *gr;
|
||||
int i;
|
||||
|
||||
gr = (struct group *) malloc (sizeof *gr);
|
||||
gr = MALLOC (struct group);
|
||||
if (NULL == gr) {
|
||||
return NULL;
|
||||
}
|
||||
@@ -46,7 +47,7 @@
|
||||
for (i = 0; grent->gr_mem[i]; i++);
|
||||
|
||||
/*@-mustfreeonly@*/
|
||||
gr->gr_mem = (char **) mallocarray (i + 1, sizeof (char *));
|
||||
gr->gr_mem = MALLOCARRAY (i + 1, char *);
|
||||
/*@=mustfreeonly@*/
|
||||
if (NULL == gr->gr_mem) {
|
||||
gr_free(gr);
|
||||
|
||||
@@ -16,8 +16,11 @@
|
||||
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
|
||||
#include "alloc.h"
|
||||
#include "prototypes.h"
|
||||
#include "defines.h"
|
||||
|
||||
static /*@null@*/FILE *shadow;
|
||||
static /*@null@*//*@only@*/char **members = NULL;
|
||||
static size_t nmembers = 0;
|
||||
@@ -63,7 +66,7 @@ static /*@null@*/char **build_list (char *s, char **list[], size_t * nlist)
|
||||
|
||||
while (s != NULL && *s != '\0') {
|
||||
size = (nelem + 1) * sizeof (ptr);
|
||||
ptr = realloc (*list, size);
|
||||
ptr = REALLOCARRAY (*list, size, char *);
|
||||
if (NULL != ptr) {
|
||||
ptr[nelem] = s;
|
||||
nelem++;
|
||||
@@ -77,7 +80,7 @@ static /*@null@*/char **build_list (char *s, char **list[], size_t * nlist)
|
||||
}
|
||||
}
|
||||
size = (nelem + 1) * sizeof (ptr);
|
||||
ptr = realloc (*list, size);
|
||||
ptr = REALLOCARRAY (*list, size, char *);
|
||||
if (NULL != ptr) {
|
||||
ptr[nelem] = NULL;
|
||||
*list = ptr;
|
||||
@@ -117,7 +120,7 @@ void endsgent (void)
|
||||
size_t len = strlen (string) + 1;
|
||||
|
||||
if (len > sgrbuflen) {
|
||||
char *buf = (char *) reallocarray (sgrbuf, len, sizeof (char));
|
||||
char *buf = REALLOCARRAY (sgrbuf, len, char);
|
||||
if (NULL == buf) {
|
||||
return NULL;
|
||||
}
|
||||
@@ -195,7 +198,7 @@ void endsgent (void)
|
||||
char *cp;
|
||||
|
||||
if (0 == buflen) {
|
||||
buf = (char *) malloc (BUFSIZ);
|
||||
buf = MALLOCARRAY (BUFSIZ, char);
|
||||
if (NULL == buf) {
|
||||
return NULL;
|
||||
}
|
||||
@@ -216,7 +219,7 @@ void endsgent (void)
|
||||
&& (feof (fp) == 0)) {
|
||||
size_t len;
|
||||
|
||||
cp = (char *) realloc (buf, buflen*2);
|
||||
cp = REALLOCARRAY (buf, buflen * 2, char);
|
||||
if (NULL == cp) {
|
||||
return NULL;
|
||||
}
|
||||
@@ -437,7 +440,7 @@ int putsgent (const struct sgrp *sgrp, FILE * fp)
|
||||
size += strlen (sgrp->sg_mem[i]) + 1;
|
||||
}
|
||||
|
||||
buf = malloc (size);
|
||||
buf = MALLOCARRAY (size, char);
|
||||
if (NULL == buf) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
@@ -6,6 +6,8 @@
|
||||
#include <strings.h>
|
||||
#include <ctype.h>
|
||||
#include <stdatomic.h>
|
||||
|
||||
#include "alloc.h"
|
||||
#include "prototypes.h"
|
||||
#include "../libsubid/subid.h"
|
||||
#include "shadowlog_internal.h"
|
||||
@@ -100,7 +102,7 @@ void nss_init(const char *nsswitch_path) {
|
||||
subid_nss = NULL;
|
||||
goto done;
|
||||
}
|
||||
subid_nss = malloc(sizeof(*subid_nss));
|
||||
subid_nss = MALLOC(struct subid_nss_ops);
|
||||
if (!subid_nss) {
|
||||
dlclose(h);
|
||||
goto done;
|
||||
|
||||
@@ -13,6 +13,8 @@
|
||||
#ident "$Id$"
|
||||
|
||||
#include <stdio.h>
|
||||
|
||||
#include "alloc.h"
|
||||
#include "defines.h"
|
||||
#include "prototypes.h"
|
||||
#include "pwio.h"
|
||||
@@ -21,7 +23,7 @@
|
||||
{
|
||||
struct passwd *pw;
|
||||
|
||||
pw = (struct passwd *) calloc (1, sizeof *pw);
|
||||
pw = CALLOC (1, struct passwd);
|
||||
if (NULL == pw) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
@@ -8,6 +8,8 @@
|
||||
#include <sys/wait.h>
|
||||
#include <unistd.h>
|
||||
#include <lib/prototypes.h>
|
||||
|
||||
#include "alloc.h"
|
||||
#include "run_part.h"
|
||||
#include "shadowlog_internal.h"
|
||||
|
||||
@@ -57,7 +59,7 @@ int run_parts (const char *directory, const char *name, const char *action)
|
||||
struct stat sb;
|
||||
|
||||
path_length=strlen(directory) + strlen(namelist[n]->d_name) + 2;
|
||||
char *s = (char*)malloc(path_length);
|
||||
char *s = MALLOCARRAY(path_length, char);
|
||||
if (!s) {
|
||||
printf ("could not allocate memory\n");
|
||||
for (; n<scanlist; n++) {
|
||||
|
||||
@@ -14,6 +14,8 @@
|
||||
#include <stdio.h>
|
||||
#include <sys/types.h>
|
||||
#include <grp.h>
|
||||
|
||||
#include "alloc.h"
|
||||
#include "defines.h"
|
||||
#include "prototypes.h"
|
||||
|
||||
@@ -44,7 +46,7 @@ static char **list (char *s)
|
||||
member name, or terminating NULL). */
|
||||
if (i >= size) {
|
||||
size = i + 100; /* at least: i + 1 */
|
||||
members = reallocarrayf (members, size, sizeof(char *));
|
||||
members = REALLOCARRAYF(members, size, char *);
|
||||
if (!members)
|
||||
return NULL;
|
||||
}
|
||||
@@ -77,7 +79,7 @@ struct group *sgetgrent (const char *buf)
|
||||
allocate a larger block */
|
||||
free (grpbuf);
|
||||
size = strlen (buf) + 1000; /* at least: strlen(buf) + 1 */
|
||||
grpbuf = malloc (size);
|
||||
grpbuf = MALLOCARRAY (size, char);
|
||||
if (grpbuf == NULL) {
|
||||
size = 0;
|
||||
return NULL;
|
||||
|
||||
@@ -14,6 +14,7 @@
|
||||
|
||||
#ident "$Id$"
|
||||
|
||||
#include "alloc.h"
|
||||
#include "prototypes.h"
|
||||
#include "defines.h"
|
||||
#include "commonio.h"
|
||||
@@ -25,7 +26,7 @@
|
||||
struct sgrp *sg;
|
||||
int i;
|
||||
|
||||
sg = (struct sgrp *) calloc (1, sizeof *sg);
|
||||
sg = CALLOC (1, struct sgrp);
|
||||
if (NULL == sg) {
|
||||
return NULL;
|
||||
}
|
||||
@@ -49,7 +50,7 @@
|
||||
|
||||
for (i = 0; NULL != sgent->sg_adm[i]; i++);
|
||||
/*@-mustfreeonly@*/
|
||||
sg->sg_adm = (char **) mallocarray (i + 1, sizeof (char *));
|
||||
sg->sg_adm = MALLOCARRAY (i + 1, char *);
|
||||
/*@=mustfreeonly@*/
|
||||
if (NULL == sg->sg_adm) {
|
||||
free (sg->sg_passwd);
|
||||
@@ -74,7 +75,7 @@
|
||||
|
||||
for (i = 0; NULL != sgent->sg_mem[i]; i++);
|
||||
/*@-mustfreeonly@*/
|
||||
sg->sg_mem = (char **) mallocarray (i + 1, sizeof (char *));
|
||||
sg->sg_mem = MALLOCARRAY (i + 1, char *);
|
||||
/*@=mustfreeonly@*/
|
||||
if (NULL == sg->sg_mem) {
|
||||
for (i = 0; NULL != sg->sg_adm[i]; i++) {
|
||||
|
||||
@@ -16,13 +16,15 @@
|
||||
#include "defines.h"
|
||||
#include <shadow.h>
|
||||
#include <stdio.h>
|
||||
|
||||
#include "alloc.h"
|
||||
#include "shadowio.h"
|
||||
|
||||
/*@null@*/ /*@only@*/struct spwd *__spw_dup (const struct spwd *spent)
|
||||
{
|
||||
struct spwd *sp;
|
||||
|
||||
sp = (struct spwd *) calloc (1, sizeof *sp);
|
||||
sp = CALLOC (1, struct spwd);
|
||||
if (NULL == sp) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
@@ -6,6 +6,8 @@
|
||||
#include <stdio.h>
|
||||
#include <sys/wait.h>
|
||||
#include <sys/types.h>
|
||||
|
||||
#include "alloc.h"
|
||||
#include "exitcodes.h"
|
||||
#include "defines.h"
|
||||
#include "prototypes.h"
|
||||
@@ -24,7 +26,7 @@ int sssd_flush_cache (int dbflags)
|
||||
const char *spawnedEnv[] = {NULL};
|
||||
int i = 0;
|
||||
|
||||
sss_cache_args = malloc(4);
|
||||
sss_cache_args = MALLOCARRAY(4, char);
|
||||
if (sss_cache_args == NULL) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
@@ -17,6 +17,8 @@
|
||||
#include <ctype.h>
|
||||
#include <fcntl.h>
|
||||
|
||||
#include "alloc.h"
|
||||
|
||||
#define ID_SIZE 31
|
||||
|
||||
/*
|
||||
@@ -32,7 +34,7 @@ static /*@null@*/ /*@only@*/void *subordinate_dup (const void *ent)
|
||||
const struct subordinate_range *rangeent = ent;
|
||||
struct subordinate_range *range;
|
||||
|
||||
range = (struct subordinate_range *) malloc (sizeof *range);
|
||||
range = MALLOC (struct subordinate_range);
|
||||
if (NULL == range) {
|
||||
return NULL;
|
||||
}
|
||||
@@ -314,12 +316,12 @@ static bool have_range(struct commonio_db *db,
|
||||
static bool append_range(struct subid_range **ranges, const struct subordinate_range *new, int n)
|
||||
{
|
||||
if (!*ranges) {
|
||||
*ranges = malloc(sizeof(struct subid_range));
|
||||
*ranges = MALLOC(struct subid_range);
|
||||
if (!*ranges)
|
||||
return false;
|
||||
} else {
|
||||
struct subid_range *alloced;
|
||||
alloced = reallocarray(*ranges, n + 1, sizeof(struct subid_range));
|
||||
alloced = REALLOCARRAY(*ranges, n + 1, struct subid_range);
|
||||
if (!alloced)
|
||||
return false;
|
||||
*ranges = alloced;
|
||||
@@ -911,7 +913,7 @@ static int append_uids(uid_t **uids, const char *owner, int n)
|
||||
return n;
|
||||
}
|
||||
|
||||
ret = reallocarray(*uids, n + 1, sizeof(uid_t));
|
||||
ret = REALLOCARRAY(*uids, n + 1, uid_t);
|
||||
if (!ret) {
|
||||
free(*uids);
|
||||
return -1;
|
||||
|
||||
Reference in New Issue
Block a user