Hello Thomas,
you're right, using the run-time size checks are a good way to keep
application from crashing because of buffer overflows. They'll just keep
on using corrupt data instead! If you want to fix this problem: Don't
use C! Use C++, C#, Java etc. instead!
I prefer to see an application crash because of a buffer overflow rather
than seeing it store truncated phone numbers in a database.
PS: If the timeout is longer than a day, winlogon uses the "%d days"
format. In the end, a buffer of 10 characters is still large enough.
PPS: I'll keep using the old functions until you remove them from the
runtime code.
Regards
Eric
Am 02.04.2018 um 14:12 schrieb Thomas Faber:
> Hey Eric,
>
> On 2018-04-02 12:58, Eric Kohl wrote:
>> - RtlStringCbPrintfW(strbuf, sizeof(strbuf), L"%d:%d:%d", hours,
>> minutes, seconds);
>> + swprintf(szBuffer, L"%02d:%02d:%02d", iHours, iMinutes, iSeconds);
>
> Unfortunately I must disagree with this change.
>
> Buffer overflows are a big enough threat that code review and
> static analysis are not generally considered sufficient to protect
> against them.
> So it's best practice for new code to always verify sizes at run-time,
> and never to use s(w)print.
>
> Best regards,
> Thomas
>
> PS: from what I see, iHours can be as large as 1193046, which won't
> fit in 2 digits
>
> _______________________________________________
> Ros-dev mailing list
> Ros-dev@reactos.org
> http://www.reactos.org/mailman/listinfo/ros-dev
_______________________________________________
Ros-dev mailing list
Ros-dev@reactos.org
http://www.reactos.org/mailman/listinfo/ros-dev