help avoid overflow from len_in + (len_in/n)*len_ins

nick, do you think this does it? if so, we should maybe backport too.


svn:r3334
This commit is contained in:
Roger Dingledine 2005-01-10 16:30:51 +00:00
parent 4b6d55afdf
commit 74bc4e5af0

View File

@ -215,6 +215,8 @@ int tor_strpartition(char *dest, size_t dest_len,
tor_assert(dest_len < SIZE_T_CEILING); tor_assert(dest_len < SIZE_T_CEILING);
len_in = strlen(s); len_in = strlen(s);
len_ins = strlen(insert); len_ins = strlen(insert);
tor_assert(len_in < SIZE_T_CEILING);
tor_assert(len_in/n < SIZE_T_CEILING/len_ins); /* avoid overflow */
len_out = len_in + (len_in/n)*len_ins; len_out = len_in + (len_in/n)*len_ins;
is_even = (len_in%n) == 0; is_even = (len_in%n) == 0;
switch (rule) switch (rule)