Path: utzoo!utgpu!water!watmath!clyde!bellcore!tness7!ninja!sys1!sneaky!gordon From: gordon@sneaky.UUCP Newsgroups: comp.unix.wizards Subject: Re: Kernel Hacks & Weird Filenames Message-ID: <-63169373@sneaky> Date: 15 May 88 05:11:00 GMT References: <14338@brl-adm.ARPA> Lines: 59 Nf-ID: #R:brl-adm.ARPA:14338:sneaky:-63169373:000:2656 Nf-From: sneaky.UUCP!gordon May 15 00:11:00 1988 To all the proponents of hacking the kernel and/or the shell to protect the user from wierd file names: Please do the world a favor and limit your "file-name sanity protection" to creation of files. Do not prohibit opening files with strange characters in their names. And especially, do not prohibit deleting them. And yes, I mean permit this kind of access regardless of what the user says his terminal is capable of. (By the way, what kind of terminal does cron use?) Yes, I know this messes up the obvious place to put the check in namei(). If doing it right is too complicated, maybe checking it at all is too complicated? Most of the problem is caused by the fact that the characters in the filename are treated specially. Don't mess things up worse by making all "funny" characters as bad as embedded nulls or '/' characters in a directory entry. Right now, there are several types of special characters that cause problems because they are special, the worst ones first: '\0' and '/': If you get these embedded in a filename, you have to go in through the disk device. How did these ever get into a file name? Ever have disk errors? Overheated memory? Buggy programs that access disk devices? Administrators that run disk-patch programs and goof? Boot up after a crash with a scrambled free list and forget to/decide not to fsck? characters with the high bit on: on those systems where the shell strips high bit from filenames, use "rm -ri ." (not "rm -ri *"), to avoid letting the shell get its hands on the name. On other systems, these characters are merely unreadable and/or untypable. unprintable characters you can't read: 'od' the directory (easiest on SysV systems), or use ls | cat -v to figure out what the name is. Also, if the characters are just invisible (as opposed to 'clear screen' or something), "rm -ri ." or rm -i with shell metacharacters filling in for the unprintable ones can work. untypable characters: use "rm -ri .", or rm -i with shell metacharacters to match the offending filename. shell metacharacters: use backslashes to quote the metacharacters and backslashes. (This may vary with what shell you are using. Also, using single quotes may be easier.) '-': if it's the first character, prefix ./ to the filename. By the way, I know there are lots of programs around like "rmfile" that may make the job easier. "rm" is pretty standard on UN*X/Xen*x systems and "rmfile", etc. aren't. Gordon Burditt ...!ihnp4!sys1!sneaky!gordon P.S. How long before /bin/shell is an illegal filename for English-speaking users only, because of the embedded cussword?