[libvirt] PATCH 2/4: AppArmor updates

Daniel P. Berrange berrange at redhat.com
Mon Aug 16 16:14:23 UTC 2010


On Fri, Aug 13, 2010 at 04:59:30PM -0500, Jamie Strandboge wrote:
> Attached is 0002-apparmor-chardev.patch
> 
> -- 
> Jamie Strandboge             | http://www.canonical.com

> Author: Jamie Strandboge <jamie at canonical.com>
> Description: fix serial ports, parallel ports and channels
> Forwarded: yes
> Bug-Ubuntu: LP: #578527, LP: #609055
> 
> Index: libvirt-0.8.3/src/security/virt-aa-helper.c
> ===================================================================
> --- libvirt-0.8.3.orig/src/security/virt-aa-helper.c	2010-08-12 12:00:04.000000000 -0500
> +++ libvirt-0.8.3/src/security/virt-aa-helper.c	2010-08-12 12:00:04.000000000 -0500
> @@ -877,13 +877,27 @@
>      for (i = 0; i < ctl->def->nserials; i++)
>          if (ctl->def->serials[i] && ctl->def->serials[i]->data.file.path)
>              if (vah_add_file(&buf,
> -                             ctl->def->serials[i]->data.file.path, "w") != 0)
> +                             ctl->def->serials[i]->data.file.path, "rw") != 0)
>                  goto clean;
>  
>      if (ctl->def->console && ctl->def->console->data.file.path)
> -        if (vah_add_file(&buf, ctl->def->console->data.file.path, "w") != 0)
> +        if (vah_add_file(&buf, ctl->def->console->data.file.path, "rw") != 0)
>              goto clean;
>  
> +    for (i = 0 ; i < ctl->def->nparallels; i++)
> +        if (ctl->def->parallels[i] && ctl->def->parallels[i]->data.file.path)
> +            if (vah_add_file(&buf,
> +                             ctl->def->parallels[i]->data.file.path,
> +                             "rw") != 0)
> +                goto clean;
> +
> +    for (i = 0 ; i < ctl->def->nchannels; i++)
> +        if (ctl->def->channels[i] && ctl->def->channels[i]->data.file.path)
> +            if (vah_add_file(&buf,
> +                             ctl->def->channels[i]->data.file.path,
> +                             "rw") != 0)
> +                goto clean;

You can't blindly de-reference   data.file.path  - The 'file' struct
is inside a union and is only valid for certain types of character 
device VIR_DOMAIN_CHR_TYPE_PTY, TYPE_DEV, TYPE_FILE and TYPE_PIPE.
The existing code for serial devices is broken too & can crash due
to this

Regards,
Daniel
-- 
|: Red Hat, Engineering, London    -o-   http://people.redhat.com/berrange/ :|
|: http://libvirt.org -o- http://virt-manager.org -o- http://deltacloud.org :|
|: http://autobuild.org        -o-         http://search.cpan.org/~danberr/ :|
|: GnuPG: 7D3B9505  -o-   F3C9 553F A1DA 4AC2 5648 23C1 B3DF F742 7D3B 9505 :|




More information about the libvir-list mailing list