Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 15 Jul 2010 13:11:13 -0600
From:      Jamie Gritton <jamie@FreeBSD.org>
To:        Stanislav Uzunchev <uzunchev.stanislav@gmail.com>
Cc:        jail@FreeBSD.org, hackers@FreeBSD.org
Subject:   Re: libjail issues.
Message-ID:  <4C3F5D51.6000903@FreeBSD.org>
In-Reply-To: <AANLkTilD-_sjxHkIrbgmQtUhxq0Dtj_JWrOWuurZW1tb@mail.gmail.com>
References:  <AANLkTilD-_sjxHkIrbgmQtUhxq0Dtj_JWrOWuurZW1tb@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
On 07/15/10 04:12, Stanislav Uzunchev wrote:
>  I have found something very strange to me... It is a problem with static
> allocating size of buffer where jail param is going to be coppied, using
> jail_getv function from the libjails. Well for example:
>
> buff[size];
> jail_getv(0, "name", "1", "host.hostname", buff, NULL);
>
> the result for size = 64; is bsnmp.test, size = 257; is bsnmp.test, size =
> 256; is bs1 ?
>
> #sysctl -a | grep "security.jail.param.host.hostname:"
> 256
>
> #jls
> JID Hostname
> 1     bsnmp.test
>
> #jls -n | grep "bs1"
> returns no match.
>
> This is really confusing me.

That's a bug in jail_getv, which I'm committing the fix for now.
Unfortunately, it's too late to get it in the 8.1 release, but it will
at least be in future releases.

The issue is that jail_getv wrongly allocated temporary space based on
the length of the parameters passed in, which don't even have values
yet. The different array sizes in your sample code would coincidentally
locate the "buff" array with different garbage contents, leading to
different behavior with the bug.

> Also i will take suggestions, what is the best way, to get and set all
> value/params using the jailparam struct.
> I am trying first to set the name or jid, and after that getting the values
> for the rest parameters with jail_getv, but i face some problems setting
> jp_value since it is type (void *).

You don't value to set jp_value directly, but use the jailparam_import
function. That will set jp_value correctly based on the parameter's type.

- Jamie



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?4C3F5D51.6000903>