Date: Thu, 6 Apr 2017 16:18:42 +0000 (UTC) From: Ed Maste <emaste@FreeBSD.org> To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r316579 - in head/usr.sbin/makefs: . cd9660 ffs Message-ID: <201704061618.v36GIgVg040413@repo.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: emaste Date: Thu Apr 6 16:18:42 2017 New Revision: 316579 URL: https://svnweb.freebsd.org/changeset/base/316579 Log: makefs: use emalloc and friends The emalloc set of error-checking memory allocation routines were added to libnetbsd in r316572. Use them in makefs to reduce differences with NetBSD. NetBSD revs: cd9660.c 1.39 ffs.c 1.56 makefs.c 1.42 walk.c 1.27 cd9660/cd9660_archimedes.c 1.2 cd9660/cd9660_eltorito.c 1.20 cd9660/cd9660_write.c 1.16 cd9660/iso9660_rrip.c 1.12 ffs/buf.c 1.17 ffs/mkfs.c 1.26 Obtained from: NetBSD Modified: head/usr.sbin/makefs/cd9660.c head/usr.sbin/makefs/cd9660/cd9660_archimedes.c head/usr.sbin/makefs/cd9660/cd9660_eltorito.c head/usr.sbin/makefs/cd9660/cd9660_write.c head/usr.sbin/makefs/cd9660/iso9660_rrip.c head/usr.sbin/makefs/ffs.c head/usr.sbin/makefs/ffs/buf.c head/usr.sbin/makefs/ffs/mkfs.c head/usr.sbin/makefs/makefs.c head/usr.sbin/makefs/mtree.c head/usr.sbin/makefs/walk.c Modified: head/usr.sbin/makefs/cd9660.c ============================================================================== --- head/usr.sbin/makefs/cd9660.c Thu Apr 6 15:57:53 2017 (r316578) +++ head/usr.sbin/makefs/cd9660.c Thu Apr 6 16:18:42 2017 (r316579) @@ -103,6 +103,7 @@ __FBSDID("$FreeBSD$"); #include <ctype.h> #include <stdlib.h> #include <string.h> +#include <util.h> #include "makefs.h" #include "cd9660.h" @@ -172,10 +173,8 @@ static int cd9660_add_generic_bootimage static cd9660node * cd9660_allocate_cd9660node(void) { - cd9660node *temp; + cd9660node *temp = ecalloc(1, sizeof(*temp)); - if ((temp = calloc(1, sizeof(cd9660node))) == NULL) - err(EXIT_FAILURE, "%s: calloc", __func__); TAILQ_INIT(&temp->cn_children); temp->parent = temp->dot_record = temp->dot_dot_record = NULL; temp->ptnext = temp->ptprev = temp->ptlast = NULL; @@ -252,10 +251,7 @@ cd9660_set_defaults(iso9660_disk *diskSt void cd9660_prep_opts(fsinfo_t *fsopts) { - iso9660_disk *diskStructure; - - if ((diskStructure = calloc(1, sizeof(*diskStructure))) == NULL) - err(EXIT_FAILURE, "%s: calloc", __func__); + iso9660_disk *diskStructure = ecalloc(1, sizeof(*diskStructure)); #define OPT_STR(letter, name, desc) \ { letter, name, NULL, OPT_STRBUF, 0, 0, desc } @@ -439,9 +435,7 @@ cd9660_parse_opts(const char *option, fs rv = 0; } else { diskStructure->boot_image_directory = - malloc(strlen(buf) + 1); - if (diskStructure->boot_image_directory == NULL) - err(1, "malloc"); + emalloc(strlen(buf) + 1); /* BIG TODO: Add the max length function here */ rv = cd9660_arguments_set_string(buf, desc, 12, 'd', diskStructure->boot_image_directory); @@ -521,12 +515,7 @@ cd9660_makefs(const char *image, const c /* Actually, we now need to add the REAL root node, at level 0 */ real_root = cd9660_allocate_cd9660node(); - if ((real_root->isoDirRecord = - malloc( sizeof(iso_directory_record_cd9660) )) == NULL) { - CD9660_MEM_ALLOC_ERROR("cd9660_makefs"); - exit(1); - } - + real_root->isoDirRecord = emalloc(sizeof(*real_root->isoDirRecord)); /* Leave filename blank for root */ memset(real_root->isoDirRecord->name, 0, ISO_FILENAME_MAXLENGTH_WITH_PADDING); @@ -770,11 +759,7 @@ cd9660_setup_volume_descriptors(iso9660_ volume_descriptor *temp, *t; /* Set up the PVD */ - if ((temp = malloc(sizeof(volume_descriptor))) == NULL) { - CD9660_MEM_ALLOC_ERROR("cd9660_setup_volume_descriptors"); - exit(1); - } - + temp = emalloc(sizeof(*temp)); temp->volumeDescriptorData = (unsigned char *)&diskStructure->primaryDescriptor; temp->volumeDescriptorData[0] = ISO_VOLUME_DESCRIPTOR_PVD; @@ -787,19 +772,10 @@ cd9660_setup_volume_descriptors(iso9660_ sector++; /* Set up boot support if enabled. BVD must reside in sector 17 */ if (diskStructure->is_bootable) { - if ((t = malloc(sizeof(volume_descriptor))) == NULL) { - CD9660_MEM_ALLOC_ERROR( - "cd9660_setup_volume_descriptors"); - exit(1); - } - if ((t->volumeDescriptorData = malloc(2048)) == NULL) { - CD9660_MEM_ALLOC_ERROR( - "cd9660_setup_volume_descriptors"); - exit(1); - } + t = emalloc(sizeof(*t)); + t->volumeDescriptorData = ecalloc(1, 2048); temp->next = t; temp = t; - memset(t->volumeDescriptorData, 0, 2048); t->sector = 17; if (diskStructure->verbose_level > 0) printf("Setting up boot volume descriptor\n"); @@ -808,17 +784,9 @@ cd9660_setup_volume_descriptors(iso9660_ } /* Set up the terminator */ - if ((t = malloc(sizeof(volume_descriptor))) == NULL) { - CD9660_MEM_ALLOC_ERROR("cd9660_setup_volume_descriptors"); - exit(1); - } - if ((t->volumeDescriptorData = malloc(2048)) == NULL) { - CD9660_MEM_ALLOC_ERROR("cd9660_setup_volume_descriptors"); - exit(1); - } - + t = emalloc(sizeof(*t)); + t->volumeDescriptorData = ecalloc(1, 2048); temp->next = t; - memset(t->volumeDescriptorData, 0, 2048); t->volumeDescriptorData[0] = ISO_VOLUME_DESCRIPTOR_TERMINATOR; t->next = NULL; t->volumeDescriptorData[6] = 1; @@ -838,12 +806,7 @@ cd9660_setup_volume_descriptors(iso9660_ static int cd9660_fill_extended_attribute_record(cd9660node *node) { - if ((node->isoExtAttributes = - malloc(sizeof(struct iso_extended_attributes))) == NULL) { - CD9660_MEM_ALLOC_ERROR("cd9660_fill_extended_attribute_record"); - exit(1); - }; - + node->isoExtAttributes = emalloc(sizeof(*node->isoExtAttributes)); return 1; } #endif @@ -901,12 +864,7 @@ cd9660_translate_node(iso9660_disk *disk printf("%s: NULL node passed, returning\n", __func__); return 0; } - if ((newnode->isoDirRecord = - malloc(sizeof(iso_directory_record_cd9660))) == NULL) { - CD9660_MEM_ALLOC_ERROR("cd9660_translate_node"); - return 0; - } - + newnode->isoDirRecord = emalloc(sizeof(*newnode->isoDirRecord)); /* Set the node pointer */ newnode->node = node; @@ -1113,7 +1071,7 @@ cd9660_rename_filename(iso9660_disk *dis else maxlength = ISO_FILENAME_MAXLENGTH_BEFORE_VERSION; - tmp = malloc(ISO_FILENAME_MAXLENGTH_WITH_PADDING); + tmp = emalloc(ISO_FILENAME_MAXLENGTH_WITH_PADDING); while (i < num && iter) { powers = 1; @@ -1552,9 +1510,7 @@ struct ptq_entry } *n; #define PTQUEUE_NEW(n,s,r,t){\ - n = malloc(sizeof(struct s)); \ - if (n == NULL) \ - return r; \ + n = emalloc(sizeof(struct s)); \ n->node = t;\ } @@ -2006,24 +1962,9 @@ cd9660_create_virtual_entry(iso9660_disk if (temp == NULL) return NULL; - if ((tfsnode = malloc(sizeof(fsnode))) == NULL) { - CD9660_MEM_ALLOC_ERROR("cd9660_create_virtual_entry"); - return NULL; - } - - /* Assume for now name is a valid length */ - if ((tfsnode->name = malloc(strlen(name) + 1)) == NULL) { - CD9660_MEM_ALLOC_ERROR("cd9660_create_virtual_entry"); - return NULL; - } - - if ((temp->isoDirRecord = - malloc(sizeof(iso_directory_record_cd9660))) == NULL) { - CD9660_MEM_ALLOC_ERROR("cd9660_create_virtual_entry"); - return NULL; - } - - strcpy(tfsnode->name, name); + tfsnode = emalloc(sizeof(*tfsnode)); + tfsnode->name = estrdup(name); + temp->isoDirRecord = emalloc(sizeof(*temp->isoDirRecord)); cd9660_convert_filename(diskStructure, tfsnode->name, temp->isoDirRecord->name, file); @@ -2075,8 +2016,7 @@ cd9660_create_file(iso9660_disk *diskStr temp->type = CD9660_TYPE_FILE | CD9660_TYPE_VIRTUAL; - if ((temp->node->inode = calloc(1, sizeof(fsinode))) == NULL) - return NULL; + temp->node->inode = ecalloc(1, sizeof(*temp->node->inode)); *temp->node->inode = *me->node->inode; if (cd9660_translate_node_common(diskStructure, temp) == 0) @@ -2103,8 +2043,7 @@ cd9660_create_directory(iso9660_disk *di temp->type = CD9660_TYPE_DIR | CD9660_TYPE_VIRTUAL; - if ((temp->node->inode = calloc(1, sizeof(fsinode))) == NULL) - return NULL; + temp->node->inode = ecalloc(1, sizeof(*temp->node->inode)); *temp->node->inode = *me->node->inode; if (cd9660_translate_node_common(diskStructure, temp) == 0) @@ -2172,10 +2111,7 @@ cd9660_add_generic_bootimage(iso9660_dis return 0; } - if ((diskStructure->generic_bootimage = strdup(bootimage)) == NULL) { - warn("%s: strdup", __func__); - return 0; - } + diskStructure->generic_bootimage = estrdup(bootimage); /* Get information about the file */ if (lstat(diskStructure->generic_bootimage, &stbuf) == -1) Modified: head/usr.sbin/makefs/cd9660/cd9660_archimedes.c ============================================================================== --- head/usr.sbin/makefs/cd9660/cd9660_archimedes.c Thu Apr 6 15:57:53 2017 (r316578) +++ head/usr.sbin/makefs/cd9660/cd9660_archimedes.c Thu Apr 6 16:18:42 2017 (r316579) @@ -40,12 +40,11 @@ #include <sys/cdefs.h> __FBSDID("$FreeBSD$"); -#include <sys/types.h> #include <assert.h> #include <stdint.h> #include <stdio.h> -#include <stdlib.h> #include <string.h> +#include <util.h> #include "makefs.h" #include "cd9660.h" @@ -93,11 +92,8 @@ archimedes_convert_node(cd9660node *node return; if (type == -1) type = 0; - assert(sizeof(struct ISO_ARCHIMEDES) == 32); - if ((arc = calloc(1, sizeof(struct ISO_ARCHIMEDES))) == NULL) { - CD9660_MEM_ALLOC_ERROR("archimedes_convert_node"); - exit(1); - } + assert(sizeof(*arc) == 32); + arc = ecalloc(1, sizeof(*arc)); stamp = riscos_date(node->node->inode->st.st_mtime); Modified: head/usr.sbin/makefs/cd9660/cd9660_eltorito.c ============================================================================== --- head/usr.sbin/makefs/cd9660/cd9660_eltorito.c Thu Apr 6 15:57:53 2017 (r316578) +++ head/usr.sbin/makefs/cd9660/cd9660_eltorito.c Thu Apr 6 16:18:42 2017 (r316579) @@ -34,6 +34,7 @@ #include "cd9660.h" #include "cd9660_eltorito.h" +#include <util.h> #include <sys/cdefs.h> __FBSDID("$FreeBSD$"); @@ -73,10 +74,7 @@ cd9660_add_boot_disk(iso9660_disk *diskS } /* First decode the boot information */ - if ((temp = strdup(boot_info)) == NULL) { - warn("%s: strdup", __func__); - return 0; - } + temp = estrdup(boot_info); sysname = temp; filename = strchr(sysname, ';'); @@ -93,12 +91,7 @@ cd9660_add_boot_disk(iso9660_disk *diskS printf("Found bootdisk with system %s, and filename %s\n", sysname, filename); } - if ((new_image = malloc(sizeof(*new_image))) == NULL) { - warn("%s: malloc", __func__); - free(temp); - return 0; - } - (void)memset(new_image, 0, sizeof(*new_image)); + new_image = ecalloc(1, sizeof(*new_image)); new_image->loadSegment = 0; /* default for now */ /* Decode System */ @@ -118,12 +111,7 @@ cd9660_add_boot_disk(iso9660_disk *diskS } - if ((new_image->filename = strdup(filename)) == NULL) { - warn("%s: strdup", __func__); - free(temp); - free(new_image); - return 0; - } + new_image->filename = estrdup(filename); free(temp); @@ -226,12 +214,7 @@ cd9660_eltorito_add_boot_option(iso9660_ static struct boot_catalog_entry * cd9660_init_boot_catalog_entry(void) { - struct boot_catalog_entry *temp; - - if ((temp = malloc(sizeof(*temp))) == NULL) - return NULL; - - return memset(temp, 0, sizeof(*temp)); + return ecalloc(1, sizeof(struct boot_catalog_entry)); } static struct boot_catalog_entry * @@ -244,11 +227,6 @@ cd9660_boot_setup_validation_entry(char int i; entry = cd9660_init_boot_catalog_entry(); - if (entry == NULL) { - warnx("Error: memory allocation failed in " - "cd9660_boot_setup_validation_entry"); - return 0; - } ve = &entry->entry_data.VE; ve->header_id[0] = 1; Modified: head/usr.sbin/makefs/cd9660/cd9660_write.c ============================================================================== --- head/usr.sbin/makefs/cd9660/cd9660_write.c Thu Apr 6 15:57:53 2017 (r316578) +++ head/usr.sbin/makefs/cd9660/cd9660_write.c Thu Apr 6 16:18:42 2017 (r316579) @@ -38,6 +38,8 @@ #include <sys/cdefs.h> __FBSDID("$FreeBSD$"); +#include <util.h> + static int cd9660_write_volume_descriptors(iso9660_disk *, FILE *); static int cd9660_write_path_table(iso9660_disk *, FILE *, off_t, int); static int cd9660_write_path_tables(iso9660_disk *, FILE *); @@ -172,14 +174,8 @@ cd9660_write_path_table(iso9660_disk *di path_table_entry temp_entry; cd9660node *ptcur; - buffer = malloc(diskStructure->sectorSize * path_table_sectors); - if (buffer == NULL) { - warnx("%s: Memory allocation error allocating buffer", - __func__); - return 0; - } + buffer = ecalloc(path_table_sectors, diskStructure->sectorSize); buffer_head = buffer; - memset(buffer, 0, diskStructure->sectorSize * path_table_sectors); ptcur = diskStructure->rootNode; @@ -278,16 +274,8 @@ cd9660_write_file(iso9660_disk *diskStru /* Todo : clean up variables */ - temp_file_name = malloc(CD9660MAXPATH + 1); - if (temp_file_name == NULL) - err(EXIT_FAILURE, "%s: malloc", __func__); - - memset(temp_file_name, 0, CD9660MAXPATH + 1); - - buf = malloc(diskStructure->sectorSize); - if (buf == NULL) - err(EXIT_FAILURE, "%s: malloc", __func__); - + temp_file_name = ecalloc(CD9660MAXPATH + 1, 1); + buf = emalloc(diskStructure->sectorSize); if ((writenode->level != 0) && !(writenode->node->type & S_IFDIR)) { fsinode *inode = writenode->node->inode; @@ -446,10 +434,7 @@ cd9660_copy_file(iso9660_disk *diskStruc int buf_size = diskStructure->sectorSize; char *buf; - buf = malloc(buf_size); - if (buf == NULL) - err(EXIT_FAILURE, "%s: malloc", __func__); - + buf = emalloc(buf_size); if ((rf = fopen(filename, "rb")) == NULL) { warn("%s: cannot open %s", __func__, filename); free(buf); Modified: head/usr.sbin/makefs/cd9660/iso9660_rrip.c ============================================================================== --- head/usr.sbin/makefs/cd9660/iso9660_rrip.c Thu Apr 6 15:57:53 2017 (r316578) +++ head/usr.sbin/makefs/cd9660/iso9660_rrip.c Thu Apr 6 16:18:42 2017 (r316579) @@ -45,6 +45,7 @@ __FBSDID("$FreeBSD$"); #include "makefs.h" #include "cd9660.h" #include "iso9660_rrip.h" +#include <util.h> static void cd9660_rrip_initialize_inode(cd9660node *); static int cd9660_susp_handle_continuation(iso9660_disk *, cd9660node *); @@ -458,11 +459,7 @@ cd9660node_susp_create_node(int susp_typ { struct ISO_SUSP_ATTRIBUTES* temp; - if ((temp = malloc(sizeof(struct ISO_SUSP_ATTRIBUTES))) == NULL) { - CD9660_MEM_ALLOC_ERROR("cd9660node_susp_create_node"); - exit(1); - } - + temp = emalloc(sizeof(*temp)); temp->susp_type = susp_type; temp->entry_type = entry_type; temp->last_in_suf = 0; Modified: head/usr.sbin/makefs/ffs.c ============================================================================== --- head/usr.sbin/makefs/ffs.c Thu Apr 6 15:57:53 2017 (r316578) +++ head/usr.sbin/makefs/ffs.c Thu Apr 6 16:18:42 2017 (r316579) @@ -82,6 +82,7 @@ __FBSDID("$FreeBSD$"); #include <string.h> #include <time.h> #include <unistd.h> +#include <util.h> #include "makefs.h" #include "ffs.h" @@ -149,10 +150,7 @@ int sectorsize; /* XXX: for buf.c::getb void ffs_prep_opts(fsinfo_t *fsopts) { - ffs_opt_t *ffs_opts; - - if ((ffs_opts = calloc(1, sizeof(ffs_opt_t))) == NULL) - err(1, "Allocating memory for ffs_options"); + ffs_opt_t *ffs_opts = ecalloc(1, sizeof(*ffs_opts)); const option_t ffs_options[] = { { 'b', "bsize", &ffs_opts->bsize, OPT_INT32, @@ -518,10 +516,7 @@ ffs_create_image(const char *image, fsin printf("zero-ing image `%s', %lld sectors, " "using %d byte chunks\n", image, (long long)bufrem, bufsize); - if ((buf = calloc(1, bufsize)) == NULL) { - warn("Can't create buffer for sector"); - return (-1); - } + buf = ecalloc(1, bufsize); } while (bufrem > 0) { i = write(fsopts->fd, buf, MIN(bufsize, bufrem)); @@ -919,8 +914,7 @@ ffs_write_file(union dinode *din, uint32 goto write_inode_and_leave; /* mmm, cheating */ if (isfile) { - if ((fbuf = malloc(ffs_opts->bsize)) == NULL) - err(1, "Allocating memory for write buffer"); + fbuf = emalloc(ffs_opts->bsize); if ((ffd = open((char *)buf, O_RDONLY, 0444)) == -1) { warn("Can't open `%s' for reading", (char *)buf); goto leave_ffs_write_file; @@ -1047,8 +1041,7 @@ ffs_make_dirbuf(dirbuf_t *dbuf, const ch if (debug & DEBUG_FS_MAKE_DIRBUF) printf("ffs_make_dirbuf: growing buf to %d\n", dbuf->size + DIRBLKSIZ); - if ((newbuf = realloc(dbuf->buf, dbuf->size + DIRBLKSIZ)) == NULL) - err(1, "Allocating memory for directory buffer"); + newbuf = erealloc(dbuf->buf, dbuf->size + DIRBLKSIZ); dbuf->buf = newbuf; dbuf->size += DIRBLKSIZ; memset(dbuf->buf + dbuf->size - DIRBLKSIZ, 0, DIRBLKSIZ); @@ -1099,10 +1092,7 @@ ffs_write_inode(union dinode *dp, uint32 assert (isclr(cg_inosused_swap(cgp, fsopts->needswap), cgino)); - buf = malloc(fs->fs_bsize); - if (buf == NULL) - errx(1, "ffs_write_inode: cg %d: can't alloc inode block", cg); - + buf = emalloc(fs->fs_bsize); dp1 = (struct ufs1_dinode *)buf; dp2 = (struct ufs2_dinode *)buf; Modified: head/usr.sbin/makefs/ffs/buf.c ============================================================================== --- head/usr.sbin/makefs/ffs/buf.c Thu Apr 6 15:57:53 2017 (r316578) +++ head/usr.sbin/makefs/ffs/buf.c Thu Apr 6 16:18:42 2017 (r316579) @@ -47,6 +47,7 @@ __FBSDID("$FreeBSD$"); #include <stdlib.h> #include <string.h> #include <unistd.h> +#include <util.h> #include "makefs.h" @@ -205,9 +206,7 @@ getblk(struct vnode *vp, daddr_t blkno, } } if (bp == NULL) { - if ((bp = calloc(1, sizeof(struct buf))) == NULL) - err(1, "getblk: calloc"); - + bp = ecalloc(1, sizeof(*bp)); bp->b_bufsize = 0; bp->b_blkno = bp->b_lblkno = blkno; bp->b_fd = fd; @@ -217,9 +216,7 @@ getblk(struct vnode *vp, daddr_t blkno, } bp->b_bcount = size; if (bp->b_data == NULL || bp->b_bcount > bp->b_bufsize) { - n = realloc(bp->b_data, size); - if (n == NULL) - err(1, "getblk: realloc b_data %ld", bp->b_bcount); + n = erealloc(bp->b_data, size); memset(n, 0, size); bp->b_data = n; bp->b_bufsize = size; Modified: head/usr.sbin/makefs/ffs/mkfs.c ============================================================================== --- head/usr.sbin/makefs/ffs/mkfs.c Thu Apr 6 15:57:53 2017 (r316578) +++ head/usr.sbin/makefs/ffs/mkfs.c Thu Apr 6 16:18:42 2017 (r316579) @@ -50,6 +50,7 @@ __FBSDID("$FreeBSD$"); #include <string.h> #include <unistd.h> #include <errno.h> +#include <util.h> #include "makefs.h" #include "ffs.h" @@ -402,8 +403,7 @@ ffs_mkfs(const char *fsys, const fsinfo_ size = sblock.fs_cssize; if (sblock.fs_contigsumsize > 0) size += sblock.fs_ncg * sizeof(int32_t); - if ((space = (char *)calloc(1, size)) == NULL) - err(1, "memory allocation error for cg summaries"); + space = ecalloc(1, size); sblock.fs_csp = space; space = (char *)space + sblock.fs_cssize; if (sblock.fs_contigsumsize > 0) { @@ -492,11 +492,7 @@ ffs_mkfs(const char *fsys, const fsinfo_ iobufsize = SBLOCKSIZE + 3 * sblock.fs_bsize; else iobufsize = 4 * sblock.fs_bsize; - if ((iobuf = malloc(iobufsize)) == NULL) { - printf("Cannot allocate I/O buffer\n"); - exit(38); - } - memset(iobuf, 0, iobufsize); + iobuf = ecalloc(1, iobufsize); /* * Make a copy of the superblock into the buffer that we will be * writing out in each cylinder group. @@ -562,8 +558,7 @@ ffs_write_superblock(struct fs *fs, cons size = fs->fs_cssize; blks = howmany(size, fs->fs_fsize); space = (void *)fs->fs_csp; - if ((wrbuf = malloc(size)) == NULL) - err(1, "ffs_write_superblock: malloc %d", size); + wrbuf = emalloc(size); for (i = 0; i < blks; i+= fs->fs_frag) { size = fs->fs_bsize; if (i + fs->fs_frag > blks) Modified: head/usr.sbin/makefs/makefs.c ============================================================================== --- head/usr.sbin/makefs/makefs.c Thu Apr 6 15:57:53 2017 (r316578) +++ head/usr.sbin/makefs/makefs.c Thu Apr 6 16:18:42 2017 (r316579) @@ -50,6 +50,7 @@ __FBSDID("$FreeBSD$"); #include <time.h> #include <unistd.h> #include <stdbool.h> +#include <util.h> #include "makefs.h" #include "mtree.h" @@ -352,10 +353,7 @@ set_option(const option_t *options, cons assert(option != NULL); - if ((var = strdup(option)) == NULL) { - err(EXIT_FAILURE, "Allocating memory for copy of option string"); - } - + var = estrdup(option); for (val = var; *val; val++) if (*val == '=') { *val++ = '\0'; @@ -396,8 +394,7 @@ set_option_var(const option_t *options, options[i].maximum); break; case OPT_STRPTR: - if ((s = strdup(val)) == NULL) - err(1, NULL); + s = estrdup(val); *(char **)options[i].value = s; break; case OPT_STRBUF: @@ -440,14 +437,11 @@ option_t * copy_opts(const option_t *o) { size_t i; - void *rv; for (i = 0; o[i].name; i++) continue; i++; - if ((rv = calloc(i, sizeof(*o))) == NULL) - err(1, "calloc"); - return memcpy(rv, o, i * sizeof(*o)); + return memcpy(ecalloc(i, sizeof(*o)), o, i * sizeof(*o)); } static int Modified: head/usr.sbin/makefs/mtree.c ============================================================================== --- head/usr.sbin/makefs/mtree.c Thu Apr 6 15:57:53 2017 (r316578) +++ head/usr.sbin/makefs/mtree.c Thu Apr 6 16:18:42 2017 (r316579) @@ -46,6 +46,7 @@ __FBSDID("$FreeBSD$"); #include <strings.h> #include <time.h> #include <unistd.h> +#include <util.h> #include "makefs.h" @@ -80,14 +81,11 @@ mtree_file_push(const char *name, FILE * { struct mtree_fileinfo *fi; - fi = malloc(sizeof(*fi)); - if (fi == NULL) - return (ENOMEM); - + fi = emalloc(sizeof(*fi)); if (strcmp(name, "-") == 0) - fi->name = strdup("(stdin)"); + fi->name = estrdup("(stdin)"); else - fi->name = strdup(name); + fi->name = estrdup(name); if (fi->name == NULL) { free(fi); return (ENOMEM); @@ -173,7 +171,7 @@ mtree_file_path(fsnode *node) } sbuf_cat(sb, rp[depth]); sbuf_finish(sb); - res = strdup(sbuf_data(sb)); + res = estrdup(sbuf_data(sb)); sbuf_delete(sb); if (res == NULL) errno = ENOMEM; @@ -203,8 +201,8 @@ mtree_resolve(const char *spec, int *ist quoted = (subst || c == '\'') ? 1 : 0; if (!subst) { - res = strdup(spec + quoted); - if (res != NULL && quoted) + res = estrdup(spec + quoted); + if (quoted) res[len - 2] = '\0'; return (res); } @@ -260,25 +258,18 @@ mtree_resolve(const char *spec, int *ist } error = ENOMEM; - var = calloc(p - v, 1); - if (var == NULL) - break; - + var = ecalloc(p - v, 1); memcpy(var, v + 1, p - v - 1); if (strcmp(var, ".CURDIR") == 0) { res = getcwd(NULL, 0); if (res == NULL) break; } else if (strcmp(var, ".PROG") == 0) { - res = strdup(getprogname()); - if (res == NULL) - break; + res = estrdup(getprogname()); } else { v = getenv(var); if (v != NULL) { - res = strdup(v); - if (res == NULL) - break; + res = estrdup(v); } else res = NULL; } @@ -456,25 +447,12 @@ create_node(const char *name, u_int type { fsnode *n; - n = calloc(1, sizeof(*n)); - if (n == NULL) - return (NULL); - - n->name = strdup(name); - if (n->name == NULL) { - free(n); - return (NULL); - } - + n = ecalloc(1, sizeof(*n)); + n->name = estrdup(name); n->type = (type == 0) ? global->type : type; n->parent = parent; - n->inode = calloc(1, sizeof(*n->inode)); - if (n->inode == NULL) { - free(n->name); - free(n); - return (NULL); - } + n->inode = ecalloc(1, sizeof(*n->inode)); /* Assign global options/defaults. */ bcopy(global->inode, n->inode, sizeof(*n->inode)); @@ -565,7 +543,7 @@ read_mtree_keywords(FILE *fp, fsnode *no error = ENOATTR; break; } - node->contents = strdup(value); + node->contents = estrdup(value); } else error = ENOSYS; break; @@ -612,7 +590,7 @@ read_mtree_keywords(FILE *fp, fsnode *no error = ENOATTR; break; } - node->symlink = strdup(value); + node->symlink = estrdup(value); } else error = ENOSYS; break; Modified: head/usr.sbin/makefs/walk.c ============================================================================== --- head/usr.sbin/makefs/walk.c Thu Apr 6 15:57:53 2017 (r316578) +++ head/usr.sbin/makefs/walk.c Thu Apr 6 16:18:42 2017 (r316579) @@ -202,8 +202,7 @@ walk_dir(const char *root, const char *d if (llen == -1) err(1, "Readlink `%s'", path); slink[llen] = '\0'; - if ((cur->symlink = strdup(slink)) == NULL) - err(1, "Memory allocation error"); + cur->symlink = estrdup(slink); } } assert(first != NULL); @@ -221,11 +220,10 @@ create_fsnode(const char *root, const ch { fsnode *cur; - if ((cur = calloc(1, sizeof(fsnode))) == NULL || - (cur->path = strdup(path)) == NULL || - (cur->name = strdup(name)) == NULL || - (cur->inode = calloc(1, sizeof(fsinode))) == NULL) - err(1, "Memory allocation error"); + cur = ecalloc(1, sizeof(*cur)); + cur->path = estrdup(path); + cur->name = estrdup(name); + cur->inode = ecalloc(1, sizeof(*cur->inode)); cur->root = root; cur->type = stbuf->st_mode & S_IFMT; cur->inode->nlink = 1; @@ -457,9 +455,7 @@ apply_specdir(const char *dir, NODE *spe if (curfsnode->type == S_IFLNK) { assert(curnode->slink != NULL); /* for symlinks, copy the target */ - if ((curfsnode->symlink = - strdup(curnode->slink)) == NULL) - err(1, "Memory allocation error"); + curfsnode->symlink = estrdup(curnode->slink); } } apply_specentry(dir, curnode, curfsnode); @@ -515,8 +511,7 @@ apply_specentry(const char *dir, NODE *s assert(specnode->slink != NULL); ASEPRINT("symlink", "%s", dirnode->symlink, specnode->slink); free(dirnode->symlink); - if ((dirnode->symlink = strdup(specnode->slink)) == NULL) - err(1, "Memory allocation error"); + dirnode->symlink = estrdup(specnode->slink); } if (specnode->flags & F_TIME) { ASEPRINT("time", "%ld", @@ -665,10 +660,7 @@ link_check(fsinode *entry) htused = 0; ohtable = htable; - htable = calloc(htmask+1, sizeof(*htable)); - if (!htable) - err(1, "Memory allocation error"); - + htable = ecalloc(htmask+1, sizeof(*htable)); /* populate newly allocated hashtable */ if (ohtable) { int i;
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201704061618.v36GIgVg040413>