diff options
author | Pedro F. Giffuni <pfg@FreeBSD.org> | 2017-04-21 19:27:33 +0000 |
---|---|---|
committer | Pedro F. Giffuni <pfg@FreeBSD.org> | 2017-04-21 19:27:33 +0000 |
commit | 1234cbbb41b6bf57c7094a5e9d015db7b303c44c (patch) | |
tree | 5d0f4dbfb4599374995f8bdcdefacb43043ee1f7 /libutil | |
parent | 841aacdd6b25fd8a7324623dbc2ebae7e572a6f6 (diff) | |
download | pw-darwin-1234cbbb41b6bf57c7094a5e9d015db7b303c44c.tar.gz pw-darwin-1234cbbb41b6bf57c7094a5e9d015db7b303c44c.tar.zst pw-darwin-1234cbbb41b6bf57c7094a5e9d015db7b303c44c.zip |
lib: initial use of reallocarray(3).
Make some use of reallocarray, attempting to limit it to cases where the
parameters are unsigned and there is some theoretical chance of overflow.
MFC afer: 2 weeks
Differential Revision: https://reviews.freebsd.org/D9980
Diffstat (limited to 'libutil')
-rw-r--r-- | libutil/gr_util.c | 2 | ||||
-rw-r--r-- | libutil/login_cap.c | 2 | ||||
-rw-r--r-- | libutil/pw_util.c | 2 |
3 files changed, 3 insertions, 3 deletions
diff --git a/libutil/gr_util.c b/libutil/gr_util.c index 99f268c..fcc0820 100644 --- a/libutil/gr_util.c +++ b/libutil/gr_util.c @@ -205,7 +205,7 @@ gr_copy(int ffd, int tfd, const struct group *gr, struct group *old_gr) if (eof) break; while ((size_t)(q - p) >= size) { - if ((tmp = realloc(buf, size * 2)) == NULL) { + if ((tmp = reallocarray(buf, 2, size)) == NULL) { warnx("group line too long"); goto err; } diff --git a/libutil/login_cap.c b/libutil/login_cap.c index 9c8d4a6..cea7630 100644 --- a/libutil/login_cap.c +++ b/libutil/login_cap.c @@ -86,7 +86,7 @@ allocarray(size_t sz) if (sz <= internal_arraysz) p = internal_array; - else if ((p = realloc(internal_array, sz * sizeof(char*))) != NULL) { + else if ((p = reallocarray(internal_array, sz, sizeof(char*))) != NULL) { internal_arraysz = sz; internal_array = p; } diff --git a/libutil/pw_util.c b/libutil/pw_util.c index e55c2b1..85b8d04 100644 --- a/libutil/pw_util.c +++ b/libutil/pw_util.c @@ -468,7 +468,7 @@ pw_copy(int ffd, int tfd, const struct passwd *pw, struct passwd *old_pw) if (eof) break; while ((size_t)(q - p) >= size) { - if ((tmp = realloc(buf, size * 2)) == NULL) { + if ((tmp = reallocarray(buf, 2, size)) == NULL) { warnx("passwd line too long"); goto err; } |