qemu-block
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-block] [Qemu-devel] ping: [PATCH v13] block/raw-posix.c: Make


From: Eric Blake
Subject: Re: [Qemu-block] [Qemu-devel] ping: [PATCH v13] block/raw-posix.c: Make physical devices usable in QEMU under Mac OS X host
Date: Tue, 2 Feb 2016 15:04:50 -0700
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.5.0

On 02/02/2016 02:23 PM, Programmingkid wrote:

>> And why isn't bsd_path usable for that purpose?
> 
> After trying it out, I found out why bsd_path isn't usable for that purpose. 
> It is because the user might try to use a flash drive as the the cdrom. Say a 
> flash drive is set to /dev/disk2s9. If the user issues the monitor command 
> "change ide1-cd0 /dev/disk2s9", this will make "if (strcmp(filename, 
> "/dev/cdrom") == 0)" false and bsd_path would never be set. bsd_path contents 
> would be garbage.
> 
> This would lead to this code not printing the unmounting directions:
> 
> if (strncmp(filename, "/dev/", 5) == 0) {
>            print_unmounting_directions(filename);
>            return -1;
>        }
> 
> It looks keeping filename as an character array is best.

No, keep filename as a const char * pointer.  It's easy to avoid use of
uninitialized memory.  Try this:

const char *filename;
char bsd_path[MAXPATHLEN] = "";
...
if (strncmp("/dev/cdrom"...) {
    bsd_path = ...
}
...
if (strncmp("/dev/"...) {
    print_unmounting_directions(*bsd_path ? bsd_path : filename);

-- 
Eric Blake   eblake redhat com    +1-919-301-3266
Libvirt virtualization library http://libvirt.org

Attachment: signature.asc
Description: OpenPGP digital signature


reply via email to

[Prev in Thread] Current Thread [Next in Thread]