summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEd Maste <emaste@FreeBSD.org>2018-12-28 17:00:12 +0000
committerEd Maste <emaste@FreeBSD.org>2018-12-28 17:00:12 +0000
commit699f18019873a2bdae5c68ec75153f7065aa589a (patch)
tree72f1d5aa8ad472288935b40c4e38adc00871d961
parent311a17259ee0810bdb91e8d145e9286dddae899b (diff)
Notes
-rw-r--r--usr.bin/ar/write.c6
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)