Prevent arithmetic overflow of 'i' in master.c:generate

the value of 'i' in generate could overflow when adding 'step' to
it in the 'for' loop.  Use an unsigned int for 'i' which will give
an additional bit and prevent the overflow.  The inputs are both
less than 2^31 and and the result will be less than 2^32-1.

(cherry picked from commit 5abdee9004)
This commit is contained in:
Mark Andrews 2022-03-04 09:37:39 +11:00
parent 05224c32a7
commit 1eff9bbf37

View file

@ -790,7 +790,8 @@ generate(dns_loadctx_t *lctx, char *range, char *lhs, char *gtype, char *rhs,
isc_buffer_t target;
isc_result_t result;
isc_textregion_t r;
int i, n, start, stop, step = 0;
int n, start, stop, step = 0;
unsigned int i;
dns_incctx_t *ictx;
char dummy[2];
@ -845,7 +846,7 @@ generate(dns_loadctx_t *lctx, char *range, char *lhs, char *gtype, char *rhs,
goto insist_cleanup;
}
for (i = start; i <= stop; i += step) {
for (i = start; i <= (unsigned int)stop; i += step) {
result = genname(lhs, i, lhsbuf, DNS_MASTER_LHS);
if (result != ISC_R_SUCCESS) {
goto error_cleanup;