From 4d6ff03d505a00406e465525cee4f0e1e99aac4b Mon Sep 17 00:00:00 2001 From: Ruslan Ermilov Date: Tue, 5 Sep 2006 16:30:11 +0000 Subject: [PATCH] alloca() cannot check if the allocation is valid; mention the consequences. Obtained from: OpenBSD --- lib/libc/stdlib/alloca.3 | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/lib/libc/stdlib/alloca.3 b/lib/libc/stdlib/alloca.3 index e87cd9fb098..d55cb75fb1c 100644 --- a/lib/libc/stdlib/alloca.3 +++ b/lib/libc/stdlib/alloca.3 @@ -32,7 +32,7 @@ .\" @(#)alloca.3 8.1 (Berkeley) 6/4/93 .\" $FreeBSD$ .\" -.Dd June 4, 1993 +.Dd September 5, 2006 .Dt ALLOCA 3 .Os .Sh NAME @@ -57,9 +57,6 @@ return. The .Fn alloca function returns a pointer to the beginning of the allocated space. -If the allocation failed, a -.Dv NULL -pointer is returned. .Sh SEE ALSO .Xr brk 2 , .Xr calloc 3 , @@ -81,3 +78,15 @@ The function is machine and compiler dependent; its use is discouraged. +.Pp +The +.Fn alloca +function is slightly unsafe because it cannot ensure that the pointer +returned points to a valid and usable block of memory. +The allocation made may exceed the bounds of the stack, or even go +further into other objects in memory, and +.Fn alloca +cannot determine such an error. +Avoid +.Fn alloca +with large unbounded allocations.