[buildd-tools-devel] Bug#605939: Bug#605939: Bug#605939: Regression: Chroots with periods in the name no longer work.
Len Sorensen
lennartsorensen at ruggedcom.com
Mon Dec 6 15:56:15 UTC 2010
On Sun, Dec 05, 2010 at 06:05:51PM -0500, Roger Leigh wrote:
> This is hopefully fixed in git. This is the logic we're using:
>
> bool
> sbuild::is_valid_sessionname (std::string const& name)
> {
> bool match = false;
>
> static regex file_namespace("^[^:/,.][^:/,]*$");
> static regex editor_backup("~$");
> static regex debian_dpkg_conffile_cruft("dpkg-(old|dist|new|tmp)$");
>
> if (regex_search(name, file_namespace) &&
> !regex_search(name, editor_backup) &&
> !regex_search(name, debian_dpkg_conffile_cruft)) {
> match = true;
> }
>
> return match;
> }
>
> If there are no objections and we're correctly picking out all editor
> and dpkg backup files, I think this is fixed.
>
> From the updated documentation:
>
> CHROOT NAMES
> A number of characters or words are not permitted in a chroot name, session
> name or configuration filename. The name may not contain a leading period
> (‘.’). The characters ‘:’ (colon), ‘,’ (comma) and ‘/’ (forward slash) are
> not permitted anywhere in the name. The name may also not contain a trail‐
> ing tilde (‘~’). The rationale for these restrictions is given below.
>
> ‘.’ A leading period could be used to create a name with a relative path
> in it, in combination with ‘/’, and this could allow overwriting of
> files on the host filesystem. Not allowing this character also means
> hidden files cannot be created. It also means some editor backups
> are automatically ignored. Periods are allowed anywhere else in the
> name.
>
> ‘:’ A colon is used as a namespace delimiter, and so is not permitted as
> part of a chroot or session name. LVM snapshot names may also not
> contain this character due to a naming restriction by lvcreate(8).
>
> ‘/’ Names containing this character are not valid filenames. A forward
> slash would potentially allow creation of files in subdirectories.
>
> ‘,’ Commas are used to separate items in lists. Aliases are separated by
> commas and hence can't contain commas in their name.
>
> ‘~’ Filenames containing trailing tildes are used for editor backup
> files, which are ignored. Tildes are allowed anywhere else in the
> name.
>
> ‘dpkg-old’
> ‘dpkg-dist’
> ‘dpkg-new’
> ‘dpkg-tmp’
> These names may not appear at the end of a name. These are saved
> copies of conffiles used by the dpkg package manager, and will be
> ignored.
I am entirely satisfied with those rules. I wanted periods allowed in
the name but certainly have no need for a leading period and it does
make it simpler to avoid relative paths when you avoid the leading period.
Looks great to me. Thanks.
--
Len Sorensen
More information about the Buildd-tools-devel
mailing list