Subject: Re: error function re-factoring.
To: None <tech-userlevel@netbsd.org>
From: Roland Illig <rillig@NetBSD.org>
List: tech-userlevel
Date: 07/29/2006 14:40:52
Iain Hibbert wrote:
> Roland Illig wrote:
>>Matthias Drochner wrote:
>>
>>>Whether error messages are printed or not... not
>>>sure what is right. But if error messages are printed,
>>>they should not contain the strings passed by the user
>>>as they could contain escape sequences or sensitive
>>>information.
>>
>>Would that mean that _all_ NetBSD utilities, even cat(1), would have to be
>>rewritten to never output control characters when that is not expected? What
>>would be the correct error message if a file whose name contains special
>>characters cannot be found?
>
>
> no, its the difference between
>
> err(EXIT_FAILURE, *argv); /* bad */
>
> and
>
> err(EXIT_FAILURE, "%s", *argv); /* good */
Even the second one can be a security hole if the pathname contains
characters that are interpreted in some special way by the terminal. I
think this is what Matthias meant.
Preventing format string bugs like in the case above is trivial
(-Wformat=2), so it's not worth a discussion here.
Roland