[Users] trouble with veth device in combination with long veid

Kirill Korotaev dev at sw.ru
Thu Jun 7 05:32:39 EDT 2007


Kristian F. Høgh wrote:
> On Wednesday den 6. June 2007 17:14:57 Nils Domrose wrote:
> 
>>Hi,
>>
>>we are facing a problem with veth device in combination with long veids.
>>if we configure a veth device as described in the wiki, we are unable
>>to start that VE with the following error:
>>
> 
> 
> In veth.c a buffer with length 11 is allocated.
> The buffer is used as follows:
> snprintf(buf, sizeof(buf), "VEID=%d", veid);
> 
> As 6 characters are used for static content (VEID= + '\0'), only 5
> characters are left. Your VEID (249104) is 6 characters long.
> 
> Apply the following patch, and you should be running.
> (An alternative is to limit your VEID in the range 100 to <= 99999)
> 
> 
> --- a/src/lib/veth.c
> +++ b/src/lib/veth.c
> @@ -90,7 +90,7 @@ static int veth_dev_remove(vps_handler *h, envid_t veid, veth_dev *dev)
>  static int run_vznetcfg(envid_t veid, veth_dev *dev)
>  {
> 	int ret;
> -	char buf[11];
> +	char buf[12];
> 	char *argv[] = {VZNETCFG, "init", "veth", NULL, NULL};
> 	char *env[2];
> 
> (Last line is empty)

In kernel if name is limited to 16 bytes, i.e. to 15 chars (plus zero).
4 chars for "veth", so 11 chars for number. VEID is int, so limited
to 2^32, which is no more then 10 chars length. So everything should
be fine except this silly bug in vzctl.

Why have you chosen 12 instead of 11?
AFAICS it should be sizeof("VEID=") + 10 + 1 (for \0) = 16

Thanks,
Kirill



More information about the Users mailing list