These allocate enough memory but things get confusing if they're used
as a guide when updating the code.
Signed-off-by: Martin Schwenke <martin@meltin.net>
Reviewed-by: Michael Adam <obnox@samba.org>
Autobuild-User(master): Michael Adam <obnox@samba.org>
Autobuild-Date(master): Tue Jan 12 22:19:16 CET 2016 on sn-devel-144
while (t != NULL) {
n = (int) strtol(t, (char **) NULL, 10);
if ((*known)[n] == NULL) {
while (t != NULL) {
n = (int) strtol(t, (char **) NULL, 10);
if ((*known)[n] == NULL) {
- (*known)[n] = talloc_array(ctx, struct ctdb_public_ip_list_old, CTDB_TEST_MAX_IPS);
+ /* Array size here has to be
+ * CTDB_TEST_MAX_IPS because total
+ * number of IPs isn't yet known */
+ (*known)[n] = talloc_size(ctx,
+ offsetof(struct ctdb_public_ip_list_old, ips) +
+ CTDB_TEST_MAX_IPS * sizeof(struct ctdb_public_ip));
(*known)[n]->num = 0;
}
curr = (*known)[n]->num;
(*known)[n]->num = 0;
}
curr = (*known)[n]->num;
}
/* Build list of all allowed IPs */
}
/* Build list of all allowed IPs */
- a = talloc_array(ctx, struct ctdb_public_ip_list_old, CTDB_TEST_MAX_IPS);
+ a = talloc_size(ctx,
+ offsetof(struct ctdb_public_ip_list_old, ips) +
+ numips * sizeof(struct ctdb_public_ip));
a->num = numips;
for (ta = *all_ips, i=0; ta != NULL && i < numips ; ta = ta->next, i++) {
a->ips[i].pnn = ta->pnn;
a->num = numips;
for (ta = *all_ips, i=0; ta != NULL && i < numips ; ta = ta->next, i++) {
a->ips[i].pnn = ta->pnn;