lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:	Wed, 10 Mar 2010 17:14:30 +0100
From:	Philippe De Muyter <phdm@...qel.be>
To:	OGAWA Hirofumi <hirofumi@...l.parknet.co.jp>
Cc:	linux-kernel@...r.kernel.org
Subject: Re: [PATCH vfat] allow retrieving entries with trailing dots

Hello Ogawa

Thanks for the quick answer.

On Wed, Mar 10, 2010 at 11:44:27PM +0900, OGAWA Hirofumi wrote:
> Philippe De Muyter <phdm@...qel.be> writes:
> 
> > --- a/fs/fat/namei_vfat.c	2009-09-10 00:13:59.000000000 +0200
> > +++ b/fs/fat/namei_vfat.c	2010-02-08 02:28:37.010096903 +0100
> > @@ -702,9 +702,22 @@
> >  static int vfat_find(struct inode *dir, struct qstr *qname,
> >  		     struct fat_slot_info *sinfo)
> >  {
> > -	unsigned int len = vfat_striptail_len(qname);
> > +	int err;
> > +	unsigned int len;
> > +
> > +	/* Some combined ethernet + usb external hard drive do not
> > +	 * remove the trailing dots when creating entries in ethernet mode.
> > +	 * (e.g. Iomega Home Network Hard Drive)
> > +	 * Make accessing those entries possible.
> > +	 */
> > +	err = fat_search_long(dir, qname->name, qname->len, sinfo);
> > +	if (!err)
> > +		return err;
> > +	len = vfat_striptail_len(qname);
> >  	if (len == 0)
> >  		return -ENOENT;
> > +	if (len == qname->len)
> > +		return err;
> >  	return fat_search_long(dir, qname->name, len, sinfo);
> >  }
> 
> This would be bad for both (standard and IO-MEGA hack).
> 
> This introduces unneeded directory-parse to standard one.  And for

No.  There will only be a second parse if someone is looking for a filename
with a trailing dot, and it is not found (*).  I there is no trailing dot in qname, only the first fat_search_long will be called, because len after vfat_striptail_len would be equal to qname->len.

> IO-MEGA, this wouldn't provide proper filename handling.

For accessing IO-MEGA disk in read mode, this is perfect.  I didn't want
to replicate IO-MEGA write behaviour here, only fix the read behaviour for
such simple commands as 'ls', 'find' and all the directory browsers.

> 
> If it wants to handle the tailing-dot as a part of filename, it
> shouldn't be able to access to the stripped-dots filename. (For simple
> example, I guess you can't do "mv a a." with this patch.)

As I explained above, I only fix read-access on IO-MEGA drives, while
preserving standard behaviour for write mode.

But I'll try your testcase asap.  Which behaviour do you expect ?
I would expect a no-op, because I did not change the write-behaviour.

Best regards

Philippe

(*) This will never happen with 'ls', 'find' and friends who get their name
list from getdents.  This could only happen if someone tries to open
a file called 'a.' on his vfat file-system, which of course does not exist
in his normal vfat file-system.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ