NetBSD-Bugs archive

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

Re: kern/48808



The following reply was made to PR kern/48808; it has been noted by GNATS.

From: "Thomas Schmitt" <scdbackup%gmx.net@localhost>
To: gnats-bugs%NetBSD.org@localhost
Cc: 
Subject: Re: kern/48808
Date: Fri, 16 May 2014 12:52:56 +0200

 Hi,
 
 > cdXd is only the raw partition on some ports, it will be cdXc on others
 > (e.g. see the BUGS section of disklabel(8)), so that should be noted
 > somewhere - I don't think that we have a good way of doing that though.
 
 It's indeed mentionen in man 8 mscdlabel:
     "The raw partition (typically partition c, but d on i386 and some other
      platforms) is left alone during this process."
 
 I change the man page proposal of mount_cd9660:
 
   Such a default offset will be overridden by option
   .Fl s
 - so that all /dev/cd* will behave like /dev/cd*d.
 + so that all /dev/cd* will behave like the raw partition device /dev/cd*d
 + resp. /dev/cd*c.
   .Pp
   .Xr mscdlabel 8
 
 
 > how likely are we to crash if the block_offset isn't a superblock?
 
 To my estimation not more than with a user applying
   mount -t 9660
 to a not suitable device rep. medium.
 
 I tried unsuitable offsets already (sorry for not reporting):
 
   netbsd# mount_cd9660 -s 12345 /dev/cd0a /mnt/iso
   mount_cd9660: /dev/cd0a on /mnt/iso: Invalid argument
 
 With unsuitable medium content i get the same
 
   netbsd# mount_cd9660  /dev/wd1f /mnt/iso
   mount_cd9660: /dev/wd1f on /mnt/iso: Invalid argument
 
 Existing precautions in cd9660:
   
 In sys/fs/cd9660/cd9660_vfsops.c the loop
         for (iso_blknum = 16; iso_blknum < 100; iso_blknum++) {
 is searching for ISO 9660 Volume Descriptors.
 If it does not find one, then it throws the error
         if (pribp == NULL) {
                 error = EINVAL;
                 goto out;
         }
 
 The loop ends on the first block that does not look like
 a ISO 9660 volume descriptor.
                 if (memcmp(vdp->id, ISO_STANDARD_ID, sizeof(vdp->id)) != 0) {
 
 It could be made a notch sharper by demanding a Primary Volume
 Descriptor (case ISO_VD_PRIMARY:) in the first block that is
 examined by the loop.
 (The macros are defined in iso.h and match my knowledge about
  ISO 9660.)
 


Home | Main Index | Thread Index | Old Index