diff options
author | Ed Maste <emaste@FreeBSD.org> | 2018-12-28 17:00:12 +0000 |
---|---|---|
committer | Ed Maste <emaste@FreeBSD.org> | 2018-12-28 17:00:12 +0000 |
commit | 699f18019873a2bdae5c68ec75153f7065aa589a (patch) | |
tree | 72f1d5aa8ad472288935b40c4e38adc00871d961 | |
parent | 311a17259ee0810bdb91e8d145e9286dddae899b (diff) |
Notes
-rw-r--r-- | usr.bin/ar/write.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/usr.bin/ar/write.c b/usr.bin/ar/write.c index 53efe74b45166..6780c652189e7 100644 --- a/usr.bin/ar/write.c +++ b/usr.bin/ar/write.c @@ -659,9 +659,13 @@ write_objs(struct bsdar *bsdar) pm_sz = _ARMAG_LEN + (_ARHDR_LEN + s_sz); if (bsdar->as != NULL) pm_sz += _ARHDR_LEN + bsdar->as_sz; - for (i = 0; (size_t)i < bsdar->s_cnt; i++) + for (i = 0; (size_t)i < bsdar->s_cnt; i++) { + if (*(bsdar->s_so + i) > UINT32_MAX - pm_sz) + bsdar_errc(bsdar, EX_SOFTWARE, 0, + "Symbol table offset overflow"); *(bsdar->s_so + i) = htobe32(*(bsdar->s_so + i) + pm_sz); + } } if ((a = archive_write_new()) == NULL) |