svn commit: r278634 - head/lib/libc/gen
Bjoern A. Zeeb
bz at FreeBSD.org
Thu Feb 12 22:28:15 UTC 2015
> On 12 Feb 2015, at 21:07 , Pedro F. Giffuni <pfg at FreeBSD.org> wrote:
>
> Author: pfg
> Date: Thu Feb 12 21:07:42 2015
> New Revision: 278634
> URL: https://svnweb.freebsd.org/changeset/base/278634
>
> Log:
> ulimit(3): Fix broken check.
>
> The existing implementation had a broken comparison that could overflow.
> Replace this with a check that avoids the overflow before it happens.
>
> Consistently return a maximum value also on the case of negative
> arguments since negative is considered an overflow and means
> infinity for our current setrlimit().
>
> Discussed with: bde (rather extensively)
>
Did this compile?
> CID: 1199295
> MFC after: 1 week
>
> Modified:
> head/lib/libc/gen/ulimit.c
>
> Modified: head/lib/libc/gen/ulimit.c
> ==============================================================================
> --- head/lib/libc/gen/ulimit.c Thu Feb 12 20:57:57 2015 (r278633)
> +++ head/lib/libc/gen/ulimit.c Thu Feb 12 21:07:42 2015 (r278634)
> @@ -53,13 +53,13 @@ ulimit(int cmd, ...)
> va_start(ap, cmd);
> arg = va_arg(ap, long);
> va_end(ap);
> + if (arg > RLIM_INFINITY / 512 || arg < 0)
> + arg = RLIM_INFINITY / 512;
> limit.rlim_max = limit.rlim_cur = (rlim_t)arg * 512;
>
> /* The setrlimit() function sets errno to EPERM if needed. */
> if (setrlimit(RLIMIT_FSIZE, &limit) == -1)
> return (-1);
> - if (arg * 512 > LONG_MAX)
> - return (LONG_MAX);
> return (arg);
> } else {
> errno = EINVAL;
>
—
Bjoern A. Zeeb Charles Haddon Spurgeon:
"Friendship is one of the sweetest joys of life. Many might have failed
beneath the bitterness of their trial had they not found a friend."
More information about the svn-src-all
mailing list