<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>