<div dir="ltr"><div>Hello All,</div><div><br></div><div>I noticed a bug report ASTERISK-25972,</div><div><br></div><div>Looking through the code we do the following:</div><div><br></div><div>sscanf(string,"%30d",&my_int);</div><div><br></div><div>Now issue is an integer can't hold a number of 30 digits in length, 32bit ints are safe with 9, and 64bit with 19.</div><div><br></div><div>If we set a value of %9d, if there are any more digits after the first 9 they will be lost but we know the value will be inside the range of an integer.</div><div><br></div><div>For single value scans, like reading from config files we could 'mitigate' by checking the strlen of the value we intend to read before running scanf, if return is >9, emit a warning stating their value will be truncated and read only the first 9 characters into the integer.</div><div> </div><div>If we use just %d, followed by %n we can see how many characters have been consumed, if we determine that it would be too large, emit a warning stating that the value is most likely incorrect.</div><div><br></div><div><br></div><div>Am I barking up the wrong tree? thoughts?</div><div><br></div></div>