<p>Furquan Shaikh has uploaded this change for <strong>review</strong>.</p><p><a href="https://review.coreboot.org/26738">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">util/sconfig: Add helper function for allocating memory<br><br>Add a helper function s_alloc (sconfig alloc) that allocates memory<br>using calloc to get 0 initialized memory and checks to ensure it is<br>not NULL.<br><br>BUG=b:80081934<br><br>Change-Id: I56a70cf4865c50ed238226ace86e867bb1ec53db<br>Signed-off-by: Furquan Shaikh <furquan@google.com><br>---<br>M util/sconfig/main.c<br>1 file changed, 23 insertions(+), 22 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">git pull ssh://review.coreboot.org:29418/coreboot refs/changes/38/26738/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/util/sconfig/main.c b/util/sconfig/main.c</span><br><span>index 0659ecd..8287cce 100644</span><br><span>--- a/util/sconfig/main.c</span><br><span>+++ b/util/sconfig/main.c</span><br><span>@@ -59,14 +59,21 @@</span><br><span> struct queue *prev;</span><br><span> } *q;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-struct queue *new_entry(void *data)</span><br><span style="color: hsl(0, 100%, 40%);">-{</span><br><span style="color: hsl(0, 100%, 40%);">- struct queue *e = malloc(sizeof(*e));</span><br><span style="color: hsl(120, 100%, 40%);">+#define S_ALLOC(_s) s_alloc(__func__, _s)</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">- if (!e) {</span><br><span style="color: hsl(0, 100%, 40%);">- fprintf(stderr, "%s: malloc failure!\n", __func__);</span><br><span style="color: hsl(120, 100%, 40%);">+static void *s_alloc(const char *f, size_t s)</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+ void *data = calloc(1, s);</span><br><span style="color: hsl(120, 100%, 40%);">+ if (!data) {</span><br><span style="color: hsl(120, 100%, 40%);">+ fprintf(stderr, "%s: Failed to alloc mem!\n", f, s);</span><br><span> exit(1);</span><br><span> }</span><br><span style="color: hsl(120, 100%, 40%);">+ return data;</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+struct queue *new_entry(void *data)</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+ struct queue *e = S_ALLOC(sizeof(*e));</span><br><span> </span><br><span> e->data = data;</span><br><span> e->next = e->prev = e;</span><br><span>@@ -108,8 +115,8 @@</span><br><span> </span><br><span> static struct device *new_dev(struct device *parent)</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">- struct device *dev = malloc(sizeof(struct device));</span><br><span style="color: hsl(0, 100%, 40%);">- memset(dev, 0, sizeof(struct device));</span><br><span style="color: hsl(120, 100%, 40%);">+ struct device *dev = S_ALLOC(sizeof(struct device));</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> dev->id = ++count;</span><br><span> dev->parent = parent;</span><br><span> dev->subsystem_vendor = -1;</span><br><span>@@ -200,13 +207,7 @@</span><br><span> </span><br><span> struct chip *new_chip(char *path)</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">- struct chip *new_chip = malloc(sizeof(*new_chip));</span><br><span style="color: hsl(0, 100%, 40%);">- if (!new_chip) {</span><br><span style="color: hsl(0, 100%, 40%);">- fprintf(stderr, "%s: malloc failure!\n", __func__);</span><br><span style="color: hsl(0, 100%, 40%);">- exit(1);</span><br><span style="color: hsl(0, 100%, 40%);">- }</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">- memset(new_chip, 0, sizeof(*new_chip));</span><br><span style="color: hsl(120, 100%, 40%);">+ struct chip *new_chip = S_ALLOC(sizeof(*new_chip));</span><br><span> </span><br><span> new_chip->id = ++count;</span><br><span> new_chip->chiph_exists = 1;</span><br><span>@@ -214,7 +215,7 @@</span><br><span> new_chip->name_underscore = translate_name(new_chip->name, UNSLASH);</span><br><span> </span><br><span> struct stat st;</span><br><span style="color: hsl(0, 100%, 40%);">- char *chip_h = malloc(strlen(path) + 18);</span><br><span style="color: hsl(120, 100%, 40%);">+ char *chip_h = S_ALLOC(strlen(path) + 18);</span><br><span> sprintf(chip_h, "src/%s", path);</span><br><span> if ((stat(chip_h, &st) == -1) && (errno == ENOENT)) {</span><br><span> /* root_complex gets away without a separate directory, but</span><br><span>@@ -254,7 +255,7 @@</span><br><span> new_d->path_b = strtol(tmp, NULL, 16);</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">- char *name = malloc(10);</span><br><span style="color: hsl(120, 100%, 40%);">+ char *name = S_ALLOC(10);</span><br><span> sprintf(name, "_dev%d", new_d->id);</span><br><span> new_d->name = name;</span><br><span> </span><br><span>@@ -350,8 +351,8 @@</span><br><span> </span><br><span> void add_resource(struct device *dev, int type, int index, int base)</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">- struct resource *r = malloc(sizeof(struct resource));</span><br><span style="color: hsl(0, 100%, 40%);">- memset(r, 0, sizeof(struct resource));</span><br><span style="color: hsl(120, 100%, 40%);">+ struct resource *r = S_ALLOC(sizeof(struct resource));</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> r->type = type;</span><br><span> r->index = index;</span><br><span> r->base = base;</span><br><span>@@ -368,8 +369,8 @@</span><br><span> </span><br><span> void add_register(struct chip *chip, char *name, char *val)</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">- struct reg *r = malloc(sizeof(struct reg));</span><br><span style="color: hsl(0, 100%, 40%);">- memset(r, 0, sizeof(struct reg));</span><br><span style="color: hsl(120, 100%, 40%);">+ struct reg *r = S_ALLOC(sizeof(struct reg));</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> r->key = name;</span><br><span> r->value = val;</span><br><span> if (chip->reg) {</span><br><span>@@ -610,8 +611,8 @@</span><br><span> </span><br><span> if (!include_exists) {</span><br><span> struct header *tmp = h->next;</span><br><span style="color: hsl(0, 100%, 40%);">- h->next = malloc(sizeof(struct header));</span><br><span style="color: hsl(0, 100%, 40%);">- memset(h->next, 0, sizeof(struct header));</span><br><span style="color: hsl(120, 100%, 40%);">+ h->next = S_ALLOC(sizeof(struct header));</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> h->next->chiph_exists = chip->chiph_exists;</span><br><span> h->next->name = chip->name;</span><br><span> h->next->next = tmp;</span><br><span></span><br></pre><p>To view, visit <a href="https://review.coreboot.org/26738">change 26738</a>. To unsubscribe, or for help writing mail filters, visit <a href="https://review.coreboot.org/settings">settings</a>.</p><div itemscope itemtype="http://schema.org/EmailMessage"><div itemscope itemprop="action" itemtype="http://schema.org/ViewAction"><link itemprop="url" href="https://review.coreboot.org/26738"/><meta itemprop="name" content="View Change"/></div></div>
<div style="display:none"> Gerrit-Project: coreboot </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-MessageType: newchange </div>
<div style="display:none"> Gerrit-Change-Id: I56a70cf4865c50ed238226ace86e867bb1ec53db </div>
<div style="display:none"> Gerrit-Change-Number: 26738 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: Furquan Shaikh <furquan@google.com> </div>