chiark / gitweb /
coccinelle: add reallocarray() coccinelle script
authorLennart Poettering <lennart@poettering.net>
Tue, 27 Feb 2018 18:09:22 +0000 (19:09 +0100)
committerSven Eden <yamakuzure@gmx.net>
Wed, 30 May 2018 05:59:12 +0000 (07:59 +0200)
Let's systematically make use of reallocarray() whereever we invoke
realloc() with a product of two values.

src/basic/env-util.c
src/basic/prioq.c
src/basic/strv.c
src/libelogind/sd-bus/bus-message.c
src/libelogind/sd-bus/bus-socket.c

index cb2c54cd899963f6402925ad4e0c2c3ddb8573a7..34f821d573ec640e769410660e281dcf34228af0 100644 (file)
@@ -722,7 +722,7 @@ char **replace_env_argv(char **argv, char **env) {
                         q = strv_length(m);
                         l = l + q - 1;
 
-                        w = realloc(ret, sizeof(char*) * (l+1));
+                        w = reallocarray(ret, l + 1, sizeof(char *));
                         if (!w) {
                                 ret[k] = NULL;
                                 strv_free(ret);
index 407b17e9bf481021116052093bf184656ef99033..2a1f1af8787e1b47dfee450a0fa0486539dc8b44 100644 (file)
@@ -173,7 +173,7 @@ int prioq_put(Prioq *q, void *data, unsigned *idx) {
                 struct prioq_item *j;
 
                 n = MAX((q->n_items+1) * 2, 16u);
-                j = realloc(q->items, sizeof(struct prioq_item) * n);
+                j = reallocarray(q->items, n, sizeof(struct prioq_item));
                 if (!j)
                         return -ENOMEM;
 
index 7898e8340bd6f01fde5df391020e2f7c3db4b381..b6f7627021a1167ff23a569047e7b19981184759 100644 (file)
@@ -215,7 +215,7 @@ int strv_extend_strv(char ***a, char **b, bool filter_duplicates) {
         p = strv_length(*a);
         q = strv_length(b);
 
-        t = realloc(*a, sizeof(char*) * (p + q + 1));
+        t = reallocarray(*a, p + q + 1, sizeof(char *));
         if (!t)
                 return -ENOMEM;
 
@@ -875,7 +875,7 @@ int strv_extend_n(char ***l, const char *value, size_t n) {
 
         k = strv_length(*l);
 
-        nl = realloc(*l, sizeof(char*) * (k + n + 1));
+        nl = reallocarray(*l, k + n + 1, sizeof(char *));
         if (!nl)
                 return -ENOMEM;
 
index 41466555803cd553d261ae6d94bedb52d5b945f4..5c91757aac802c766bd3bd7bc0cdd4d47fcdb31a 100644 (file)
@@ -1400,7 +1400,7 @@ static int message_push_fd(sd_bus_message *m, int fd) {
         if (copy < 0)
                 return -errno;
 
-        f = realloc(m->fds, sizeof(int) * (m->n_fds + 1));
+        f = reallocarray(m->fds, sizeof(int), m->n_fds + 1);
         if (!f) {
                 m->poisoned = true;
                 safe_close(copy);
index 4890895bc09913a557b78465509f65544ef595ff..a86d092a6736b46915658e1a752de5e90d805d2c 100644 (file)
@@ -1223,7 +1223,7 @@ int bus_socket_read_message(sd_bus *bus) {
                                         return -EIO;
                                 }
 
-                                f = realloc(bus->fds, sizeof(int) * (bus->n_fds + n));
+                                f = reallocarray(bus->fds, bus->n_fds + n, sizeof(int));
                                 if (!f) {
                                         close_many((int*) CMSG_DATA(cmsg), n);
                                         return -ENOMEM;