summaryrefslogtreecommitdiffstats
path: root/libidu
diff options
context:
space:
mode:
authorJim Meyering <meyering@redhat.com>2008-01-04 16:29:18 +0100
committerJim Meyering <meyering@redhat.com>2008-01-30 21:34:33 +0100
commit79f0ffc240ee3fe6789a90ec01ae0503aced7927 (patch)
treefd6d5a9c9f487c6f869c2abddf4be05c9c51da72 /libidu
parent3cda817f6cd73abfed5bdcc567735ad633904d41 (diff)
downloadidutils-79f0ffc240ee3fe6789a90ec01ae0503aced7927.tar.gz
idutils-79f0ffc240ee3fe6789a90ec01ae0503aced7927.tar.bz2
idutils-79f0ffc240ee3fe6789a90ec01ae0503aced7927.zip
Allocate safely.
* libidu/dynvec.c (make_dynvec, dynvec_freeze, dynvec_append): Use xnmalloc, not xmalloc (n * sizeof T). Use xnrealloc, not xrealloc (p, n * sizeof T). * libidu/walker.c (append_strings_to_vector, vectorize_string): Likewise. * libidu/scanners.c (tokenize_args_string): Likewise.
Diffstat (limited to 'libidu')
-rw-r--r--libidu/dynvec.c8
-rw-r--r--libidu/scanners.c2
-rw-r--r--libidu/walker.c9
3 files changed, 10 insertions, 9 deletions
diff --git a/libidu/dynvec.c b/libidu/dynvec.c
index 8a9c20c..2326291 100644
--- a/libidu/dynvec.c
+++ b/libidu/dynvec.c
@@ -1,5 +1,5 @@
/* dynvec.c -- dynamically growable vectors
- Copyright (C) 1995, 2007 Free Software Foundation, Inc.
+ Copyright (C) 1995, 2007-2008 Free Software Foundation, Inc.
Written by Greg McGary <gkm@gnu.ai.mit.edu>
This program is free software; you can redistribute it and/or modify
@@ -25,7 +25,7 @@ struct dynvec *
make_dynvec (int n)
{
struct dynvec *dv = xmalloc (sizeof(struct dynvec) * 1);
- dv->dv_vec = xmalloc (sizeof(void *) * n);
+ dv->dv_vec = xnmalloc (n, sizeof *dv->dv_vec);
dv->dv_capacity = n;
dv->dv_fill = 0;
return dv;
@@ -44,7 +44,7 @@ dynvec_freeze (struct dynvec *dv)
if (dv->dv_fill == dv->dv_capacity)
return;
dv->dv_capacity = dv->dv_fill;
- dv->dv_vec = xrealloc (dv->dv_vec, sizeof(void *) * dv->dv_capacity);
+ dv->dv_vec = xnrealloc (dv->dv_vec, dv->dv_capacity, sizeof *dv->dv_vec);
}
void
@@ -53,7 +53,7 @@ dynvec_append (struct dynvec *dv, void *element)
if (dv->dv_fill == dv->dv_capacity)
{
dv->dv_capacity *= 2;
- dv->dv_vec = xrealloc (dv->dv_vec, sizeof(void *) * dv->dv_capacity);
+ dv->dv_vec = xnrealloc (dv->dv_vec, dv->dv_capacity, sizeof *dv->dv_vec);
}
dv->dv_vec[dv->dv_fill++] = element;
}
diff --git a/libidu/scanners.c b/libidu/scanners.c
index c29b649..5789baa 100644
--- a/libidu/scanners.c
+++ b/libidu/scanners.c
@@ -307,7 +307,7 @@ tokenize_args_string (char *args_string, int *argcp, char ***argvp)
arg = strsep (&args_string, horizontal_space);
}
*argcp = argv - argv_0;
- *argvp = xrealloc (argv_0, sizeof(char *) * (*argcp));
+ *argvp = xnrealloc (argv_0, *argcp, sizeof **argvp);
}
static void
diff --git a/libidu/walker.c b/libidu/walker.c
index 30f826e..921421c 100644
--- a/libidu/walker.c
+++ b/libidu/walker.c
@@ -510,16 +510,17 @@ append_strings_to_vector (char **vector_0, char *string, char const *delimiter_c
if (vector_0)
{
int length = vector_length (vector_0);
- vector_0 = xrealloc (vector_0, sizeof(char *) * (length + 2 + strlen (string) / 2));
+ vector_0 = xnrealloc (vector_0, length + 2 + strlen (string) / 2,
+ sizeof *vector_0);
vector = &vector_0[length];
}
else
- vector = vector_0 = xmalloc (sizeof(char *) * (2 + strlen (string) / 2));
+ vector = vector_0 = xnmalloc (2 + strlen (string) / 2, sizeof *vector);
do
*vector = strsep (&string, delimiter_class);
while (*vector++);
- return xrealloc (vector_0, sizeof(char *) * (vector - vector_0));
+ return xnrealloc (vector_0, vector - vector_0, sizeof *vector_0);
}
int
@@ -701,7 +702,7 @@ vectorize_string (char *string, char const *delimiter_class)
*vector = strsep (&string, delimiter_class);
while (*vector++);
}
- return xrealloc (vector_0, sizeof(char *) * (vector - vector_0));
+ return xnrealloc (vector_0, vector - vector_0, sizeof *vector_0);
}
void