C99 Features
Nathaniel McCallum
npmccallum at redhat.com
Wed Jun 17 15:27:40 EDT 2015
On Wed, 2015-06-17 at 14:46 -0400, Greg Hudson wrote:
> On 06/17/2015 02:32 PM, Nathaniel McCallum wrote:
> > You can't check for allocation failure on most operating systems'
> > heap
> > allocation these days.
>
> MIT krb5 does not assume that it is operating in such an environment,
> or
> we could simplify an awful lot of code. I've gently brought this up
> once or twice and the consensus has been that we should continue
> trying
> to rigorously handle malloc failures, even if not all environments
> make
> such checks useful.
FTR, I was not suggesting we should ignore failures. We shouldn't. I
only meant that on many platforms such handling is not likely to catch
an actual OOM condition.
> A more nuanced argument is that you can't check for the success of
> stack
> allocation even when allocating fixed-sized automatic variables.
> When
> an attacker can control stack use without reasonable bounds, that
> creates a DOS vector, whether the stack overrun is due to recursion
> or
> VLAs. The same is true for heap use without reasonable bound,
> although
> in a threaded environment the reasonable bound for stack use has to
> be
> significantly lower than for heap use.
>
> In a threaded environment, VLAs of attacker-controlled size, which
> are
> accessed in non-sequential order, could cause more significant
> security
> issues than a DOS; you might skip over the guard page and overwrite a
> different thread's stack. The same is theoretically possible with
> fixed-sized automatic variables, but there would have to be a lot of
> them (or a few very large ones).
>
> > But with careful use, there is a lot of benefit.
>
> I agree with the conclusion.
>
More information about the krbdev
mailing list