<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<id>tag:old.nabble.com,2006:forum-6635</id>
	<title>Nabble - freebsd-vuxml</title>
	<updated>2008-11-30T15:03:50Z</updated>
	<link rel="self" type="application/atom+xml" href="http://old.nabble.com/freebsd-vuxml-f6635.xml" />
	<link rel="alternate" type="text/html" href="http://old.nabble.com/freebsd-vuxml-f6635.html" />
	<subtitle type="html">Documenting security issues in VuXML</subtitle>
	
<entry>
	<id>tag:old.nabble.com,2006:post-20764358</id>
	<title>[vuxml] lang/perl5.8: document and fix CVE-2005-0448</title>
	<published>2008-11-30T15:03:50Z</published>
	<updated>2008-11-30T15:03:50Z</updated>
	<author>
		<name>Eygene Ryabinkin-3</name>
	</author>
	<content type="html">&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt;Submitter-Id:	current-users
&lt;br&gt;&amp;gt;Originator:	Eygene Ryabinkin
&lt;br&gt;&amp;gt;Organization:	Code Labs
&lt;br&gt;&amp;gt;Confidential:	no 
&lt;br&gt;&amp;gt;Synopsis:	[vuxml] [patch] lang/perl5.8: document and fix CVE-2005-0448
&lt;br&gt;&amp;gt;Severity:	critical
&lt;br&gt;&amp;gt;Priority:	high
&lt;br&gt;&amp;gt;Category:	ports
&lt;br&gt;&amp;gt;Class:		sw-bug
&lt;br&gt;&amp;gt;Release:	FreeBSD 7.1-PRERELEASE amd64
&lt;br&gt;&amp;gt;Environment:
&lt;/div&gt;&lt;br&gt;System: FreeBSD 7.1-PRERELEASE amd64
&lt;br&gt;&lt;br&gt;&amp;gt;Description:
&lt;br&gt;&lt;br&gt;As was recently discovered, perl 5.8.8 has missed the fix for CVE-2005-0448:
&lt;br&gt;&amp;nbsp; &lt;a href=&quot;http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=286905#85&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=286905#85&lt;/a&gt;&lt;br&gt;&amp;nbsp; &lt;a href=&quot;http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=286922#36&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=286922#36&lt;/a&gt;&lt;br&gt;&lt;br&gt;&amp;gt;How-To-Repeat:
&lt;br&gt;&lt;br&gt;Look at the above URLs. &amp;nbsp;Use the following scripts (packed in shar
&lt;br&gt;archive) to check the issue. &amp;nbsp;Prerequisites for testing: directory
&lt;br&gt;'/pr' owned by root and two files inside it, 'passwd' and 'sh', both
&lt;br&gt;owned by root too. &amp;nbsp;The invocation sequence is simple.
&lt;br&gt;1. spawn 'prepare-XXX.sh' as ordinary user: this will prepare the
&lt;br&gt;&amp;nbsp; &amp;nbsp;directory structure;
&lt;br&gt;2. from the same directory run as root 'perl rmtree.pl';
&lt;br&gt;3. wait for a couple of milliseconds and spawn 'spawn-XXX.sh' as
&lt;br&gt;&amp;nbsp; &amp;nbsp;ordinary user.
&lt;br&gt;&lt;br&gt;--- vuln-test.shar begins here ---
&lt;br&gt;# This is a shell archive. &amp;nbsp;Save it in a file, remove anything before
&lt;br&gt;# this line, and then unpack it by entering &amp;quot;sh file&amp;quot;. &amp;nbsp;Note, it may
&lt;br&gt;# create directories; files and directories will be owned by you and
&lt;br&gt;# have default permissions.
&lt;br&gt;#
&lt;br&gt;# This archive contains:
&lt;br&gt;#
&lt;br&gt;#	vuln-test/prepare-setuid.sh
&lt;br&gt;#	vuln-test/prepare-unlink.sh
&lt;br&gt;#	vuln-test/rmtree.pl
&lt;br&gt;#	vuln-test/spawn-setuid.sh
&lt;br&gt;#	vuln-test/spawn-unlink.sh
&lt;br&gt;#
&lt;br&gt;echo x - vuln-test/prepare-setuid.sh
&lt;br&gt;sed 's/^X//' &amp;gt;vuln-test/prepare-setuid.sh &amp;lt;&amp;lt; '9c54eac5eb535fdf6f93fce30544605e'
&lt;br&gt;X#!/bin/sh
&lt;br&gt;X# Prepares directory for testing of CVE-2005-0448.
&lt;br&gt;X
&lt;br&gt;Xmkdir -p hier/sh
&lt;br&gt;Xperl -e 'open F, &amp;quot;&amp;gt;hier/sh/$_&amp;quot; foreach (1..100000);'
&lt;br&gt;Xchmod 4755 hier/sh
&lt;br&gt;9c54eac5eb535fdf6f93fce30544605e
&lt;br&gt;echo x - vuln-test/prepare-unlink.sh
&lt;br&gt;sed 's/^X//' &amp;gt;vuln-test/prepare-unlink.sh &amp;lt;&amp;lt; '42f366cf566b8c56fa9dedf27d4c4eae'
&lt;br&gt;X#!/bin/sh
&lt;br&gt;X# Prepares directory for testing of CVE-2005-0448.
&lt;br&gt;X
&lt;br&gt;Xmkdir -p hier/d
&lt;br&gt;Xperl -e 'open F, &amp;quot;&amp;gt;hier/d/$_&amp;quot; foreach (1..100000);'
&lt;br&gt;Xtouch hier/passwd
&lt;br&gt;42f366cf566b8c56fa9dedf27d4c4eae
&lt;br&gt;echo x - vuln-test/rmtree.pl
&lt;br&gt;sed 's/^X//' &amp;gt;vuln-test/rmtree.pl &amp;lt;&amp;lt; '278957334ec6138c45b1bda9645cdb05'
&lt;br&gt;X#!/usr/bin/perl -w
&lt;br&gt;X
&lt;br&gt;Xuse strict;
&lt;br&gt;X
&lt;br&gt;Xuse File::Path;
&lt;br&gt;X
&lt;br&gt;Xrmtree(&amp;quot;hier&amp;quot;, 1, 0);
&lt;br&gt;278957334ec6138c45b1bda9645cdb05
&lt;br&gt;echo x - vuln-test/spawn-setuid.sh
&lt;br&gt;sed 's/^X//' &amp;gt;vuln-test/spawn-setuid.sh &amp;lt;&amp;lt; 'cccb5451c4bca28aff1735483a5e1028'
&lt;br&gt;X#!/bin/sh
&lt;br&gt;X
&lt;br&gt;Xmv hier/sh hier/sh.old &amp;&amp; ln -s /pr/sh hier/sh
&lt;br&gt;cccb5451c4bca28aff1735483a5e1028
&lt;br&gt;echo x - vuln-test/spawn-unlink.sh
&lt;br&gt;sed 's/^X//' &amp;gt;vuln-test/spawn-unlink.sh &amp;lt;&amp;lt; '92cf7ebfb6f9cb94b8ce3012299a6342'
&lt;br&gt;X#!/bin/sh
&lt;br&gt;X
&lt;br&gt;Xmv hier h &amp;&amp; ln -s /pr hier
&lt;br&gt;92cf7ebfb6f9cb94b8ce3012299a6342
&lt;br&gt;exit
&lt;br&gt;--- vuln-test.shar ends here ---
&lt;br&gt;&lt;br&gt;&amp;gt;Fix:
&lt;br&gt;&lt;br&gt;The following patch fixes the issue by updating the File::Path to the
&lt;br&gt;most recent version (see ports/129301 for an overview about p5-File-Path):
&lt;br&gt;--- perl5.8-fix-CVE-2005-0448-and-related-ones.diff begins here ---
&lt;br&gt;&amp;gt;From e70588395eea5f069f7c386d728cae88b413cb51 Mon Sep 17 00:00:00 2001
&lt;br&gt;From: Eygene Ryabinkin &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=20764358&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;rea-fbsd@...&lt;/a&gt;&amp;gt;
&lt;br&gt;Date: Mon, 1 Dec 2008 01:22:24 +0300
&lt;br&gt;&lt;br&gt;It was discovered that CVE-2005-0448 was resurrected in perl 5.8.8:
&lt;br&gt;&amp;nbsp; &lt;a href=&quot;http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=286905&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=286905&lt;/a&gt;&lt;br&gt;&amp;nbsp; &lt;a href=&quot;http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=286922&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=286922&lt;/a&gt;&lt;br&gt;&lt;br&gt;The fixes in bug 286905 are either for 5.10.0 or made for Debian, so
&lt;br&gt;it is not very clear if they will properly work on FreeBSD. &amp;nbsp;Meanwhile,
&lt;br&gt;File::Path 2.07 is here and it fixes almost everything (or at least seem
&lt;br&gt;to fix ;)). &amp;nbsp;So my recipe is the following:
&lt;br&gt;&lt;br&gt;- take Path.pm from FreeBSD's devel/p5-File-Path 2.07_1 (ports/129301);
&lt;br&gt;&lt;br&gt;- take Path.t from 5.10.0 (it really does matter only for 'make test'
&lt;br&gt;&amp;nbsp; or simular, 5.10.0 should be fine for this);
&lt;br&gt;&lt;br&gt;- implant these two into our Perl 5.8.8.
&lt;br&gt;&lt;br&gt;Signed-off-by: Eygene Ryabinkin &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=20764358&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;rea-fbsd@...&lt;/a&gt;&amp;gt;
&lt;br&gt;---
&lt;br&gt;&amp;nbsp;lang/perl5.8/Makefile &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;| &amp;nbsp; &amp;nbsp;2 +-
&lt;br&gt;&amp;nbsp;lang/perl5.8/files/patch-lib::File::Path | 1558 ++++++++++++++++++++++++++++++
&lt;br&gt;&amp;nbsp;2 files changed, 1559 insertions(+), 1 deletions(-)
&lt;br&gt;&amp;nbsp;create mode 100644 lang/perl5.8/files/patch-lib::File::Path
&lt;br&gt;&lt;br&gt;diff --git a/lang/perl5.8/Makefile b/lang/perl5.8/Makefile
&lt;br&gt;index 7252ed7..e92bca5 100644
&lt;br&gt;--- a/lang/perl5.8/Makefile
&lt;br&gt;+++ b/lang/perl5.8/Makefile
&lt;br&gt;@@ -7,7 +7,7 @@
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;PORTNAME=	perl
&lt;br&gt;&amp;nbsp;PORTVERSION=	${PERL_VER}
&lt;br&gt;-PORTREVISION=	1
&lt;br&gt;+PORTREVISION=	2
&lt;br&gt;&amp;nbsp;CATEGORIES=	lang devel perl5
&lt;br&gt;&amp;nbsp;MASTER_SITES=	CPAN \
&lt;br&gt;&amp;nbsp;		${MASTER_SITE_LOCAL:S/$/:local/} \
&lt;br&gt;diff --git a/lang/perl5.8/files/patch-lib::File::Path b/lang/perl5.8/files/patch-lib::File::Path
&lt;br&gt;new file mode 100644
&lt;br&gt;index 0000000..a37ed11
&lt;br&gt;--- /dev/null
&lt;br&gt;+++ b/lang/perl5.8/files/patch-lib::File::Path
&lt;br&gt;@@ -0,0 +1,1558 @@
&lt;br&gt;+This one fixes CVE-2005-0448 and related, see
&lt;br&gt;+ &amp;nbsp;&lt;a href=&quot;http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=286905&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=286905&lt;/a&gt;&lt;br&gt;+ &amp;nbsp;&lt;a href=&quot;http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=286922&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=286922&lt;/a&gt;&lt;br&gt;+
&lt;br&gt;+The method is simple: I had implanted File::Path.pm from the FreeBSD's
&lt;br&gt;+devel/p5-File-Path, version 2.07_1 (additionally patched version 2.07,
&lt;br&gt;+see ports/129301). &amp;nbsp;File::Path.t was taken from perl-5.10.0.
&lt;br&gt;+
&lt;br&gt;+diff --git a/lib/File/Path.pm b/lib/File/Path.pm
&lt;br&gt;+index 2e41ff3..f38d242 100644
&lt;br&gt;+--- lib/File/Path.pm
&lt;br&gt;++++ lib/File/Path.pm
&lt;br&gt;+@@ -1,285 +1,869 @@
&lt;br&gt;+ package File::Path;
&lt;br&gt;+ 
&lt;br&gt;++use 5.005_04;
&lt;br&gt;++use strict;
&lt;br&gt;++
&lt;br&gt;++use Cwd 'getcwd';
&lt;br&gt;++use File::Basename ();
&lt;br&gt;++use File::Spec &amp;nbsp; &amp;nbsp; ();
&lt;br&gt;++
&lt;br&gt;++BEGIN {
&lt;br&gt;++ &amp;nbsp; &amp;nbsp;if ($] &amp;lt; 5.006) {
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;# can't say 'opendir my $dh, $dirname'
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;# need to initialise $dh
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;eval &amp;quot;use Symbol&amp;quot;;
&lt;br&gt;++ &amp;nbsp; &amp;nbsp;}
&lt;br&gt;++}
&lt;br&gt;++
&lt;br&gt;++use Exporter ();
&lt;br&gt;++use vars qw($VERSION @ISA @EXPORT @EXPORT_OK);
&lt;br&gt;++$VERSION &amp;nbsp; = '2.07';
&lt;br&gt;++@ISA &amp;nbsp; &amp;nbsp; &amp;nbsp; = qw(Exporter);
&lt;br&gt;++@EXPORT &amp;nbsp; &amp;nbsp;= qw(mkpath rmtree);
&lt;br&gt;++@EXPORT_OK = qw(make_path remove_tree);
&lt;br&gt;++
&lt;br&gt;++my $Is_VMS &amp;nbsp; &amp;nbsp; = $^O eq 'VMS';
&lt;br&gt;++my $Is_MacOS &amp;nbsp; = $^O eq 'MacOS';
&lt;br&gt;++
&lt;br&gt;++# These OSes complain if you want to remove a file that you have no
&lt;br&gt;++# write permission to:
&lt;br&gt;++my $Force_Writeable = grep {$^O eq $_} qw(amigaos dos epoc MSWin32 MacOS os2);
&lt;br&gt;++
&lt;br&gt;++sub _carp {
&lt;br&gt;++ &amp;nbsp; &amp;nbsp;require Carp;
&lt;br&gt;++ &amp;nbsp; &amp;nbsp;goto &amp;Carp::carp;
&lt;br&gt;++}
&lt;br&gt;++
&lt;br&gt;++sub _croak {
&lt;br&gt;++ &amp;nbsp; &amp;nbsp;require Carp;
&lt;br&gt;++ &amp;nbsp; &amp;nbsp;goto &amp;Carp::croak;
&lt;br&gt;++}
&lt;br&gt;++
&lt;br&gt;++sub _error {
&lt;br&gt;++ &amp;nbsp; &amp;nbsp;my $arg &amp;nbsp; &amp;nbsp; = shift;
&lt;br&gt;++ &amp;nbsp; &amp;nbsp;my $message = shift;
&lt;br&gt;++ &amp;nbsp; &amp;nbsp;my $object &amp;nbsp;= shift;
&lt;br&gt;++
&lt;br&gt;++ &amp;nbsp; &amp;nbsp;if ($arg-&amp;gt;{error}) {
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;$object = '' unless defined $object;
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;$message .= &amp;quot;: $!&amp;quot; if $!;
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;push @{${$arg-&amp;gt;{error}}}, {$object =&amp;gt; $message};
&lt;br&gt;++ &amp;nbsp; &amp;nbsp;}
&lt;br&gt;++ &amp;nbsp; &amp;nbsp;else {
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;_carp(defined($object) ? &amp;quot;$message for $object: $!&amp;quot; : &amp;quot;$message: $!&amp;quot;);
&lt;br&gt;++ &amp;nbsp; &amp;nbsp;}
&lt;br&gt;++}
&lt;br&gt;++
&lt;br&gt;++sub make_path {
&lt;br&gt;++ &amp;nbsp; &amp;nbsp;push @_, {} unless @_ and UNIVERSAL::isa($_[-1],'HASH');
&lt;br&gt;++ &amp;nbsp; &amp;nbsp;goto &amp;mkpath;
&lt;br&gt;++}
&lt;br&gt;++
&lt;br&gt;++sub mkpath {
&lt;br&gt;++ &amp;nbsp; &amp;nbsp;my $old_style = !(@_ and UNIVERSAL::isa($_[-1],'HASH'));
&lt;br&gt;++
&lt;br&gt;++ &amp;nbsp; &amp;nbsp;my $arg;
&lt;br&gt;++ &amp;nbsp; &amp;nbsp;my $paths;
&lt;br&gt;++
&lt;br&gt;++ &amp;nbsp; &amp;nbsp;if ($old_style) {
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;my ($verbose, $mode);
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;($paths, $verbose, $mode) = @_;
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;$paths = [$paths] unless UNIVERSAL::isa($paths,'ARRAY');
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;$arg-&amp;gt;{verbose} = $verbose;
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;$arg-&amp;gt;{mode} &amp;nbsp; &amp;nbsp;= defined $mode ? $mode : 0777;
&lt;br&gt;++ &amp;nbsp; &amp;nbsp;}
&lt;br&gt;++ &amp;nbsp; &amp;nbsp;else {
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;$arg = pop @_;
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;$arg-&amp;gt;{mode} &amp;nbsp; &amp;nbsp; &amp;nbsp;= delete $arg-&amp;gt;{mask} if exists $arg-&amp;gt;{mask};
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;$arg-&amp;gt;{mode} &amp;nbsp; &amp;nbsp; &amp;nbsp;= 0777 unless exists $arg-&amp;gt;{mode};
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;${$arg-&amp;gt;{error}} &amp;nbsp;= [] if exists $arg-&amp;gt;{error};
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;$paths = [@_];
&lt;br&gt;++ &amp;nbsp; &amp;nbsp;}
&lt;br&gt;++ &amp;nbsp; &amp;nbsp;return _mkpath($arg, $paths);
&lt;br&gt;++}
&lt;br&gt;++
&lt;br&gt;++sub _mkpath {
&lt;br&gt;++ &amp;nbsp; &amp;nbsp;my $arg &amp;nbsp; = shift;
&lt;br&gt;++ &amp;nbsp; &amp;nbsp;my $paths = shift;
&lt;br&gt;++
&lt;br&gt;++ &amp;nbsp; &amp;nbsp;my(@created,$path);
&lt;br&gt;++ &amp;nbsp; &amp;nbsp;foreach $path (@$paths) {
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;next unless defined($path) and length($path);
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;$path .= '/' if $^O eq 'os2' and $path =~ /^\w:\z/s; # feature of CRT 
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;# Logic wants Unix paths, so go with the flow.
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if ($Is_VMS) {
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;next if $path eq '/';
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;$path = VMS::Filespec::unixify($path);
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;next if -d $path;
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;my $parent = File::Basename::dirname($path);
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;unless (-d $parent or $path eq $parent) {
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;push(@created,_mkpath($arg, [$parent]));
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;print &amp;quot;mkdir $path\n&amp;quot; if $arg-&amp;gt;{verbose};
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (mkdir($path,$arg-&amp;gt;{mode})) {
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;push(@created, $path);
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;else {
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;my $save_bang = $!;
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;my ($e, $e1) = ($save_bang, $^E);
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;$e .= &amp;quot;; $e1&amp;quot; if $e ne $e1;
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;# allow for another process to have created it meanwhile
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (!-d $path) {
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;$! = $save_bang;
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if ($arg-&amp;gt;{error}) {
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;push @{${$arg-&amp;gt;{error}}}, {$path =&amp;gt; $e};
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;else {
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;_croak(&amp;quot;mkdir $path: $e&amp;quot;);
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;++ &amp;nbsp; &amp;nbsp;}
&lt;br&gt;++ &amp;nbsp; &amp;nbsp;return @created;
&lt;br&gt;++}
&lt;br&gt;++
&lt;br&gt;++sub remove_tree {
&lt;br&gt;++ &amp;nbsp; &amp;nbsp;push @_, {} unless @_ and UNIVERSAL::isa($_[-1],'HASH');
&lt;br&gt;++ &amp;nbsp; &amp;nbsp;goto &amp;rmtree;
&lt;br&gt;++}
&lt;br&gt;++
&lt;br&gt;++sub rmtree {
&lt;br&gt;++ &amp;nbsp; &amp;nbsp;my $old_style = !(@_ and UNIVERSAL::isa($_[-1],'HASH'));
&lt;br&gt;++
&lt;br&gt;++ &amp;nbsp; &amp;nbsp;my $arg;
&lt;br&gt;++ &amp;nbsp; &amp;nbsp;my $paths;
&lt;br&gt;++
&lt;br&gt;++ &amp;nbsp; &amp;nbsp;if ($old_style) {
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;my ($verbose, $safe);
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;($paths, $verbose, $safe) = @_;
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;$arg-&amp;gt;{verbose} = $verbose;
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;$arg-&amp;gt;{safe} &amp;nbsp; &amp;nbsp;= defined $safe &amp;nbsp; &amp;nbsp;? $safe &amp;nbsp; &amp;nbsp;: 0;
&lt;br&gt;++
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (defined($paths) and length($paths)) {
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;$paths = [$paths] unless UNIVERSAL::isa($paths,'ARRAY');
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;else {
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;_carp (&amp;quot;No root path(s) specified\n&amp;quot;);
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return 0;
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;++ &amp;nbsp; &amp;nbsp;}
&lt;br&gt;++ &amp;nbsp; &amp;nbsp;else {
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;$arg = pop @_;
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;${$arg-&amp;gt;{error}} &amp;nbsp;= [] if exists $arg-&amp;gt;{error};
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;${$arg-&amp;gt;{result}} = [] if exists $arg-&amp;gt;{result};
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;$paths = [@_];
&lt;br&gt;++ &amp;nbsp; &amp;nbsp;}
&lt;br&gt;++
&lt;br&gt;++ &amp;nbsp; &amp;nbsp;$arg-&amp;gt;{prefix} = '';
&lt;br&gt;++ &amp;nbsp; &amp;nbsp;$arg-&amp;gt;{depth} &amp;nbsp;= 0;
&lt;br&gt;++
&lt;br&gt;++ &amp;nbsp; &amp;nbsp;my @clean_path;
&lt;br&gt;++ &amp;nbsp; &amp;nbsp;$arg-&amp;gt;{cwd} = getcwd() or do {
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;_error($arg, &amp;quot;cannot fetch initial working directory&amp;quot;);
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return 0;
&lt;br&gt;++ &amp;nbsp; &amp;nbsp;};
&lt;br&gt;++ &amp;nbsp; &amp;nbsp;for ($arg-&amp;gt;{cwd}) { /\A(.*)\Z/; $_ = $1 } # untaint
&lt;br&gt;++
&lt;br&gt;++ &amp;nbsp; &amp;nbsp;for my $p (@$paths) {
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;# need to fixup case and map \ to / on Windows
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;my $ortho_root = $^O eq 'MSWin32' ? _slash_lc($p) &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;: $p;
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;my $ortho_cwd &amp;nbsp;= $^O eq 'MSWin32' ? _slash_lc($arg-&amp;gt;{cwd}) : $arg-&amp;gt;{cwd};
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;my $ortho_root_length = length($ortho_root);
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;$ortho_root_length-- if $^O eq 'VMS'; # don't compare '.' with ']'
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if ($ortho_root_length
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;&amp; (substr($ortho_root, 0, $ortho_root_length) 
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; eq substr($ortho_cwd, 0, $ortho_root_length))) {
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;local $! = 0;
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;_error($arg, &amp;quot;cannot remove path when cwd is $arg-&amp;gt;{cwd}&amp;quot;, $p);
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;next;
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;++
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if ($Is_MacOS) {
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;$p &amp;nbsp;= &amp;quot;:$p&amp;quot; unless $p =~ /:/;
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;$p .= &amp;quot;:&amp;quot; &amp;nbsp; unless $p =~ /:\z/;
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;elsif ($^O eq 'MSWin32') {
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;$p =~ s{[/\\]\z}{};
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;else {
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;$p =~ s{/\z}{};
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;push @clean_path, $p;
&lt;br&gt;++ &amp;nbsp; &amp;nbsp;}
&lt;br&gt;++
&lt;br&gt;++ &amp;nbsp; &amp;nbsp;@{$arg}{qw(device inode perm)} = (lstat $arg-&amp;gt;{cwd})[0,1] or do {
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;_error($arg, &amp;quot;cannot stat initial working directory&amp;quot;, $arg-&amp;gt;{cwd});
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return 0;
&lt;br&gt;++ &amp;nbsp; &amp;nbsp;};
&lt;br&gt;++
&lt;br&gt;++ &amp;nbsp; &amp;nbsp;return _rmtree($arg, \@clean_path);
&lt;br&gt;++}
&lt;br&gt;++
&lt;br&gt;++sub _rmtree {
&lt;br&gt;++ &amp;nbsp; &amp;nbsp;my $arg &amp;nbsp; = shift;
&lt;br&gt;++ &amp;nbsp; &amp;nbsp;my $paths = shift;
&lt;br&gt;++
&lt;br&gt;++ &amp;nbsp; &amp;nbsp;my $count &amp;nbsp;= 0;
&lt;br&gt;++ &amp;nbsp; &amp;nbsp;my $curdir = File::Spec-&amp;gt;curdir();
&lt;br&gt;++ &amp;nbsp; &amp;nbsp;my $updir &amp;nbsp;= File::Spec-&amp;gt;updir();
&lt;br&gt;++
&lt;br&gt;++ &amp;nbsp; &amp;nbsp;my (@files, $root);
&lt;br&gt;++ &amp;nbsp; &amp;nbsp;ROOT_DIR:
&lt;br&gt;++ &amp;nbsp; &amp;nbsp;foreach $root (@$paths) {
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;# since we chdir into each directory, it may not be obvious
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;# to figure out where we are if we generate a message about
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;# a file name. We therefore construct a semi-canonical
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;# filename, anchored from the directory being unlinked (as
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;# opposed to being truly canonical, anchored from the root (/).
&lt;br&gt;++
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;my $canon = $arg-&amp;gt;{prefix}
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;? File::Spec-&amp;gt;catfile($arg-&amp;gt;{prefix}, $root)
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;: $root
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;;
&lt;br&gt;++
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;my ($ldev, $lino, $perm) = (lstat $root)[0,1,2] or next ROOT_DIR;
&lt;br&gt;++
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if ( -d _ ) {
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;$root = VMS::Filespec::pathify($root) if $Is_VMS;
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (!chdir($root)) {
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;# see if we can escalate privileges to get in
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;# (e.g. funny protection mask such as -w- instead of rwx)
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;$perm &amp;= 07777;
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;my $nperm = $perm | 0700;
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (!($arg-&amp;gt;{safe} or $nperm == $perm or chmod($nperm, $root))) {
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;_error($arg, &amp;quot;cannot make child directory read-write-exec&amp;quot;, $canon);
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;next ROOT_DIR;
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;elsif (!chdir($root)) {
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;_error($arg, &amp;quot;cannot chdir to child&amp;quot;, $canon);
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;next ROOT_DIR;
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;++
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;my ($cur_dev, $cur_inode, $perm) = (stat $curdir)[0,1,2] or do {
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;_error($arg, &amp;quot;cannot stat current working directory&amp;quot;, $canon);
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;next ROOT_DIR;
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;};
&lt;br&gt;++
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;($ldev eq $cur_dev and $lino eq $cur_inode)
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;or _croak(&amp;quot;directory $canon changed before chdir, expected dev=$ldev ino=$lino, actual dev=$cur_dev ino=$cur_inode, aborting.&amp;quot;);
&lt;br&gt;++
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;$perm &amp;= 07777; # don't forget setuid, setgid, sticky bits
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;my $nperm = $perm | 0700;
&lt;br&gt;++
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;# notabene: 0700 is for making readable in the first place,
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;# it's also intended to change it to writable in case we have
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;# to recurse in which case we are better than rm -rf for 
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;# subtrees with strange permissions
&lt;br&gt;++
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (!($arg-&amp;gt;{safe} or $nperm == $perm or chmod($nperm, $curdir))) {
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;_error($arg, &amp;quot;cannot make directory read+writeable&amp;quot;, $canon);
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;$nperm = $perm;
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;++
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;my $d;
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;$d = gensym() if $] &amp;lt; 5.006;
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (!opendir $d, $curdir) {
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;_error($arg, &amp;quot;cannot opendir&amp;quot;, $canon);
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;@files = ();
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;else {
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;no strict 'refs';
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (!defined ${&amp;quot;\cTAINT&amp;quot;} or ${&amp;quot;\cTAINT&amp;quot;}) {
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;# Blindly untaint dir names if taint mode is
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;# active, or any perl &amp;lt; 5.006
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;@files = map { /\A(.*)\z/s; $1 } readdir $d;
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;else {
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;@files = readdir $d;
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;closedir $d;
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;++
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if ($Is_VMS) {
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;# Deleting large numbers of files from VMS Files-11
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;# filesystems is faster if done in reverse ASCIIbetical order.
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;# include '.' to '.;' from blead patch #31775
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;@files = map {$_ eq '.' ? '.;' : $_} reverse @files;
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;($root = VMS::Filespec::unixify($root)) =~ s/\.dir\z//;
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;@files = grep {$_ ne $updir and $_ ne $curdir} @files;
&lt;br&gt;++
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (@files) {
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;# remove the contained files before the directory itself
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;my $narg = {%$arg};
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;@{$narg}{qw(device inode cwd prefix depth)}
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;= ($cur_dev, $cur_inode, $updir, $canon, $arg-&amp;gt;{depth}+1);
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;$count += _rmtree($narg, \@files);
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;++
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;# restore directory permissions of required now (in case the rmdir
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;# below fails), while we are still in the directory and may do so
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;# without a race via '.'
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if ($nperm != $perm and not chmod($perm, $curdir)) {
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;_error($arg, &amp;quot;cannot reset chmod&amp;quot;, $canon);
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;++
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;# don't leave the client code in an unexpected directory
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;chdir($arg-&amp;gt;{cwd})
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;or _croak(&amp;quot;cannot chdir to $arg-&amp;gt;{cwd} from $canon: $!, aborting.&amp;quot;);
&lt;br&gt;++
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;# ensure that a chdir upwards didn't take us somewhere other
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;# than we expected (see CVE-2002-0435)
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;($cur_dev, $cur_inode) = (stat $curdir)[0,1]
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;or _croak(&amp;quot;cannot stat prior working directory $arg-&amp;gt;{cwd}: $!, aborting.&amp;quot;);
&lt;br&gt;++
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;($arg-&amp;gt;{device} eq $cur_dev and $arg-&amp;gt;{inode} eq $cur_inode)
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;or _croak(&amp;quot;previous directory $arg-&amp;gt;{cwd} changed before entering $canon, expected dev=$ldev ino=$lino, actual dev=$cur_dev ino=$cur_inode, aborting.&amp;quot;);
&lt;br&gt;++
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if ($arg-&amp;gt;{depth} or !$arg-&amp;gt;{keep_root}) {
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if ($arg-&amp;gt;{safe} &amp;&amp;
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;($Is_VMS ? !&amp;VMS::Filespec::candelete($root) : !-w $root)) {
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;print &amp;quot;skipped $root\n&amp;quot; if $arg-&amp;gt;{verbose};
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;next ROOT_DIR;
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if ($Force_Writeable and !chmod $perm | 0700, $root) {
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;_error($arg, &amp;quot;cannot make directory writeable&amp;quot;, $canon);
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;print &amp;quot;rmdir $root\n&amp;quot; if $arg-&amp;gt;{verbose};
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (rmdir $root) {
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;push @{${$arg-&amp;gt;{result}}}, $root if $arg-&amp;gt;{result};
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;++$count;
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;else {
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;_error($arg, &amp;quot;cannot remove directory&amp;quot;, $canon);
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if ($Force_Writeable &amp;&amp; !chmod($perm, ($Is_VMS ? VMS::Filespec::fileify($root) : $root))
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;) {
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;_error($arg, sprintf(&amp;quot;cannot restore permissions to 0%o&amp;quot;,$perm), $canon);
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;else {
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;# not a directory
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;$root = VMS::Filespec::vmsify(&amp;quot;./$root&amp;quot;)
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if $Is_VMS
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;&amp; !File::Spec-&amp;gt;file_name_is_absolute($root)
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;&amp; ($root !~ m/(?&amp;lt;!\^)[\]&amp;gt;]+/); &amp;nbsp;# not already in VMS syntax
&lt;br&gt;++
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if ($arg-&amp;gt;{safe} &amp;&amp;
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;($Is_VMS ? !&amp;VMS::Filespec::candelete($root)
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; : !(-l $root || -w $root)))
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;print &amp;quot;skipped $root\n&amp;quot; if $arg-&amp;gt;{verbose};
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;next ROOT_DIR;
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;++
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;my $nperm = $perm &amp; 07777 | 0600;
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if ($Force_Writeable and $nperm != $perm and not chmod $nperm, $root) {
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;_error($arg, &amp;quot;cannot make file writeable&amp;quot;, $canon);
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;print &amp;quot;unlink $canon\n&amp;quot; if $arg-&amp;gt;{verbose};
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;# delete all versions under VMS
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;for (;;) {
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (unlink $root) {
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;push @{${$arg-&amp;gt;{result}}}, $root if $arg-&amp;gt;{result};
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;else {
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;_error($arg, &amp;quot;cannot unlink file&amp;quot;, $canon);
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;$Force_Writeable and chmod($perm, $root) or
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;_error($arg, sprintf(&amp;quot;cannot restore permissions to 0%o&amp;quot;,$perm), $canon);
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;last;
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;++$count;
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;last unless $Is_VMS &amp;&amp; lstat $root;
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;++ &amp;nbsp; &amp;nbsp;}
&lt;br&gt;++ &amp;nbsp; &amp;nbsp;return $count;
&lt;br&gt;++}
&lt;br&gt;++
&lt;br&gt;++sub _slash_lc {
&lt;br&gt;++ &amp;nbsp; &amp;nbsp;# fix up slashes and case on MSWin32 so that we can determine that
&lt;br&gt;++ &amp;nbsp; &amp;nbsp;# c:\path\to\dir is underneath C:/Path/To
&lt;br&gt;++ &amp;nbsp; &amp;nbsp;my $path = shift;
&lt;br&gt;++ &amp;nbsp; &amp;nbsp;$path =~ tr{\\}{/};
&lt;br&gt;++ &amp;nbsp; &amp;nbsp;return lc($path);
&lt;br&gt;++}
&lt;br&gt;++
&lt;br&gt;++1;
&lt;br&gt;++__END__
&lt;br&gt;++
&lt;br&gt;+ =head1 NAME
&lt;br&gt;+ 
&lt;br&gt;+-File::Path - create or remove directory trees
&lt;br&gt;++File::Path - Create or remove directory trees
&lt;br&gt;++
&lt;br&gt;++=head1 VERSION
&lt;br&gt;++
&lt;br&gt;++This document describes version 2.07 of File::Path, released
&lt;br&gt;++2008-11-09.
&lt;br&gt;+ 
&lt;br&gt;+ =head1 SYNOPSIS
&lt;br&gt;+ 
&lt;br&gt;+- &amp;nbsp; &amp;nbsp;use File::Path;
&lt;br&gt;++ &amp;nbsp;use File::Path qw(make_path remove_tree);
&lt;br&gt;++
&lt;br&gt;++ &amp;nbsp;make_path('foo/bar/baz', '/zug/zwang');
&lt;br&gt;++ &amp;nbsp;make_path('foo/bar/baz', '/zug/zwang', {
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp;verbose =&amp;gt; 1,
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp;mode =&amp;gt; 0711,
&lt;br&gt;++ &amp;nbsp;});
&lt;br&gt;++
&lt;br&gt;++ &amp;nbsp;remove_tree('foo/bar/baz', '/zug/zwang');
&lt;br&gt;++ &amp;nbsp;remove_tree('foo/bar/baz', '/zug/zwang', {
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp;verbose =&amp;gt; 1,
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp;error &amp;nbsp;=&amp;gt; \my $err_list,
&lt;br&gt;++ &amp;nbsp;});
&lt;br&gt;++
&lt;br&gt;++ &amp;nbsp;# legacy (interface promoted before v2.00)
&lt;br&gt;++ &amp;nbsp;mkpath('/foo/bar/baz');
&lt;br&gt;++ &amp;nbsp;mkpath('/foo/bar/baz', 1, 0711);
&lt;br&gt;++ &amp;nbsp;mkpath(['/foo/bar/baz', 'blurfl/quux'], 1, 0711);
&lt;br&gt;++ &amp;nbsp;rmtree('foo/bar/baz', 1, 1);
&lt;br&gt;++ &amp;nbsp;rmtree(['foo/bar/baz', 'blurfl/quux'], 1, 1);
&lt;br&gt;+ 
&lt;br&gt;+- &amp;nbsp; &amp;nbsp;mkpath(['/foo/bar/baz', 'blurfl/quux'], 1, 0711);
&lt;br&gt;+- &amp;nbsp; &amp;nbsp;rmtree(['foo/bar/baz', 'blurfl/quux'], 1, 1);
&lt;br&gt;++ &amp;nbsp;# legacy (interface promoted before v2.06)
&lt;br&gt;++ &amp;nbsp;mkpath('foo/bar/baz', '/zug/zwang', { verbose =&amp;gt; 1, mode =&amp;gt; 0711 });
&lt;br&gt;++ &amp;nbsp;rmtree('foo/bar/baz', '/zug/zwang', { verbose =&amp;gt; 1, mode =&amp;gt; 0711 });
&lt;br&gt;+ 
&lt;br&gt;+ =head1 DESCRIPTION
&lt;br&gt;+ 
&lt;br&gt;+-The C&amp;lt;mkpath&amp;gt; function provides a convenient way to create directories, even
&lt;br&gt;+-if your C&amp;lt;mkdir&amp;gt; kernel call won't create more than one level of directory at
&lt;br&gt;+-a time. &amp;nbsp;C&amp;lt;mkpath&amp;gt; takes three arguments:
&lt;br&gt;++This module provide a convenient way to create directories of
&lt;br&gt;++arbitrary depth and to delete an entire directory subtree from the
&lt;br&gt;++filesystem.
&lt;br&gt;+ 
&lt;br&gt;+-=over 4
&lt;br&gt;++The following functions are provided:
&lt;br&gt;+ 
&lt;br&gt;+-=item *
&lt;br&gt;++=over
&lt;br&gt;+ 
&lt;br&gt;+-the name of the path to create, or a reference
&lt;br&gt;+-to a list of paths to create,
&lt;br&gt;++=item make_path( $dir1, $dir2, .... )
&lt;br&gt;+ 
&lt;br&gt;+-=item *
&lt;br&gt;++=item make_path( $dir1, $dir2, ...., \%opts )
&lt;br&gt;+ 
&lt;br&gt;+-a boolean value, which if TRUE will cause C&amp;lt;mkpath&amp;gt;
&lt;br&gt;+-to print the name of each directory as it is created
&lt;br&gt;+-(defaults to FALSE), and
&lt;br&gt;++The C&amp;lt;make_path&amp;gt; function creates the given directories if they don't
&lt;br&gt;++exists before, much like the Unix command C&amp;lt;mkdir -p&amp;gt;.
&lt;br&gt;+ 
&lt;br&gt;+-=item *
&lt;br&gt;++The function accepts a list of directories to be created. Its
&lt;br&gt;++behaviour may be tuned by an optional hashref appearing as the last
&lt;br&gt;++parameter on the call.
&lt;br&gt;++
&lt;br&gt;++The function returns the list of directories actually created during
&lt;br&gt;++the call; in scalar context the number of directories created.
&lt;br&gt;++
&lt;br&gt;++The following keys are recognised in the option hash:
&lt;br&gt;++
&lt;br&gt;++=over
&lt;br&gt;++
&lt;br&gt;++=item mode =&amp;gt; $num
&lt;br&gt;++
&lt;br&gt;++The numeric permissions mode to apply to each created directory
&lt;br&gt;++(defaults to 0777), to be modified by the current C&amp;lt;umask&amp;gt;. If the
&lt;br&gt;++directory already exists (and thus does not need to be created),
&lt;br&gt;++the permissions will not be modified.
&lt;br&gt;++
&lt;br&gt;++C&amp;lt;mask&amp;gt; is recognised as an alias for this parameter.
&lt;br&gt;++
&lt;br&gt;++=item verbose =&amp;gt; $bool
&lt;br&gt;++
&lt;br&gt;++If present, will cause C&amp;lt;make_path&amp;gt; to print the name of each directory
&lt;br&gt;++as it is created. By default nothing is printed.
&lt;br&gt;+ 
&lt;br&gt;+-the numeric mode to use when creating the directories
&lt;br&gt;+-(defaults to 0777), to be modified by the current umask.
&lt;br&gt;++=item error =&amp;gt; \$err
&lt;br&gt;++
&lt;br&gt;++If present, it should be a reference to a scalar.
&lt;br&gt;++This scalar will be made to reference an array, which will
&lt;br&gt;++be used to store any errors that are encountered. &amp;nbsp;See the L&amp;lt;/&amp;quot;ERROR
&lt;br&gt;++HANDLING&amp;quot;&amp;gt; section for more information.
&lt;br&gt;++
&lt;br&gt;++If this parameter is not used, certain error conditions may raise
&lt;br&gt;++a fatal error that will cause the program will halt, unless trapped
&lt;br&gt;++in an C&amp;lt;eval&amp;gt; block.
&lt;br&gt;+ 
&lt;br&gt;+ =back
&lt;br&gt;+ 
&lt;br&gt;+-It returns a list of all directories (including intermediates, determined
&lt;br&gt;+-using the Unix '/' separator) created.
&lt;br&gt;++=item mkpath( $dir )
&lt;br&gt;+ 
&lt;br&gt;+-If a system error prevents a directory from being created, then the
&lt;br&gt;+-C&amp;lt;mkpath&amp;gt; function throws a fatal error with C&amp;lt;Carp::croak&amp;gt;. This error
&lt;br&gt;+-can be trapped with an C&amp;lt;eval&amp;gt; block:
&lt;br&gt;++=item mkpath( $dir, $verbose, $mode )
&lt;br&gt;+ 
&lt;br&gt;+- &amp;nbsp;eval { mkpath($dir) };
&lt;br&gt;+- &amp;nbsp;if ($@) {
&lt;br&gt;+- &amp;nbsp; &amp;nbsp;print &amp;quot;Couldn't create $dir: $@&amp;quot;;
&lt;br&gt;+- &amp;nbsp;}
&lt;br&gt;++=item mkpath( [$dir1, $dir2,...], $verbose, $mode )
&lt;br&gt;+ 
&lt;br&gt;+-Similarly, the C&amp;lt;rmtree&amp;gt; function provides a convenient way to delete a
&lt;br&gt;+-subtree from the directory structure, much like the Unix command C&amp;lt;rm -r&amp;gt;.
&lt;br&gt;+-C&amp;lt;rmtree&amp;gt; takes three arguments:
&lt;br&gt;++=item mkpath( $dir1, $dir2,..., \%opt )
&lt;br&gt;+ 
&lt;br&gt;+-=over 4
&lt;br&gt;++The mkpath() function provide the legacy interface of make_path() with
&lt;br&gt;++a different interpretation of the arguments passed. &amp;nbsp;The behaviour and
&lt;br&gt;++return value of the function is otherwise identical to make_path().
&lt;br&gt;+ 
&lt;br&gt;+-=item *
&lt;br&gt;++=item remove_tree( $dir1, $dir2, .... )
&lt;br&gt;+ 
&lt;br&gt;+-the root of the subtree to delete, or a reference to
&lt;br&gt;+-a list of roots. &amp;nbsp;All of the files and directories
&lt;br&gt;+-below each root, as well as the roots themselves,
&lt;br&gt;+-will be deleted.
&lt;br&gt;++=item remove_tree( $dir1, $dir2, ...., \%opts )
&lt;br&gt;+ 
&lt;br&gt;+-=item *
&lt;br&gt;++The C&amp;lt;remove_tree&amp;gt; function deletes the given directories and any
&lt;br&gt;++files and subdirectories they might contain, much like the Unix
&lt;br&gt;++command C&amp;lt;rm -r&amp;gt; or C&amp;lt;del /s&amp;gt; on Windows.
&lt;br&gt;+ 
&lt;br&gt;+-a boolean value, which if TRUE will cause C&amp;lt;rmtree&amp;gt; to
&lt;br&gt;+-print a message each time it examines a file, giving the
&lt;br&gt;+-name of the file, and indicating whether it's using C&amp;lt;rmdir&amp;gt;
&lt;br&gt;+-or C&amp;lt;unlink&amp;gt; to remove it, or that it's skipping it.
&lt;br&gt;+-(defaults to FALSE)
&lt;br&gt;++The function accepts a list of directories to be
&lt;br&gt;++removed. Its behaviour may be tuned by an optional hashref
&lt;br&gt;++appearing as the last parameter on the call.
&lt;br&gt;+ 
&lt;br&gt;+-=item *
&lt;br&gt;++The functions returns the number of files successfully deleted.
&lt;br&gt;++
&lt;br&gt;++The following keys are recognised in the option hash:
&lt;br&gt;++
&lt;br&gt;++=over
&lt;br&gt;++
&lt;br&gt;++=item verbose =&amp;gt; $bool
&lt;br&gt;++
&lt;br&gt;++If present, will cause C&amp;lt;remove_tree&amp;gt; to print the name of each file as
&lt;br&gt;++it is unlinked. By default nothing is printed.
&lt;br&gt;++
&lt;br&gt;++=item safe =&amp;gt; $bool
&lt;br&gt;++
&lt;br&gt;++When set to a true value, will cause C&amp;lt;remove_tree&amp;gt; to skip the files
&lt;br&gt;++for which the process lacks the required privileges needed to delete
&lt;br&gt;++files, such as delete privileges on VMS. In other words, the code
&lt;br&gt;++will make no attempt to alter file permissions. Thus, if the process
&lt;br&gt;++is interrupted, no filesystem object will be left in a more
&lt;br&gt;++permissive mode.
&lt;br&gt;++
&lt;br&gt;++=item keep_root =&amp;gt; $bool
&lt;br&gt;++
&lt;br&gt;++When set to a true value, will cause all files and subdirectories
&lt;br&gt;++to be removed, except the initially specified directories. This comes
&lt;br&gt;++in handy when cleaning out an application's scratch directory.
&lt;br&gt;++
&lt;br&gt;++ &amp;nbsp;remove_tree( '/tmp', {keep_root =&amp;gt; 1} );
&lt;br&gt;++
&lt;br&gt;++=item result =&amp;gt; \$res
&lt;br&gt;++
&lt;br&gt;++If present, it should be a reference to a scalar.
&lt;br&gt;++This scalar will be made to reference an array, which will
&lt;br&gt;++be used to store all files and directories unlinked
&lt;br&gt;++during the call. If nothing is unlinked, the array will be empty.
&lt;br&gt;++
&lt;br&gt;++ &amp;nbsp;remove_tree( '/tmp', {result =&amp;gt; \my $list} );
&lt;br&gt;++ &amp;nbsp;print &amp;quot;unlinked $_\n&amp;quot; for @$list;
&lt;br&gt;++
&lt;br&gt;++This is a useful alternative to the C&amp;lt;verbose&amp;gt; key.
&lt;br&gt;++
&lt;br&gt;++=item error =&amp;gt; \$err
&lt;br&gt;++
&lt;br&gt;++If present, it should be a reference to a scalar.
&lt;br&gt;++This scalar will be made to reference an array, which will
&lt;br&gt;++be used to store any errors that are encountered. &amp;nbsp;See the L&amp;lt;/&amp;quot;ERROR
&lt;br&gt;++HANDLING&amp;quot;&amp;gt; section for more information.
&lt;br&gt;++
&lt;br&gt;++Removing things is a much more dangerous proposition than
&lt;br&gt;++creating things. As such, there are certain conditions that
&lt;br&gt;++C&amp;lt;remove_tree&amp;gt; may encounter that are so dangerous that the only
&lt;br&gt;++sane action left is to kill the program.
&lt;br&gt;++
&lt;br&gt;++Use C&amp;lt;error&amp;gt; to trap all that is reasonable (problems with
&lt;br&gt;++permissions and the like), and let it die if things get out
&lt;br&gt;++of hand. This is the safest course of action.
&lt;br&gt;++
&lt;br&gt;++=back
&lt;br&gt;++
&lt;br&gt;++=item rmtree( $dir )
&lt;br&gt;++
&lt;br&gt;++=item rmtree( $dir, $verbose, $safe )
&lt;br&gt;++
&lt;br&gt;++=item rmtree( [$dir1, $dir2,...], $verbose, $safe )
&lt;br&gt;+ 
&lt;br&gt;+-a boolean value, which if TRUE will cause C&amp;lt;rmtree&amp;gt; to
&lt;br&gt;+-skip any files to which you do not have delete access
&lt;br&gt;+-(if running under VMS) or write access (if running
&lt;br&gt;+-under another OS). &amp;nbsp;This will change in the future when
&lt;br&gt;+-a criterion for 'delete permission' under OSs other
&lt;br&gt;+-than VMS is settled. &amp;nbsp;(defaults to FALSE)
&lt;br&gt;++=item rmtree( $dir1, $dir2,..., \%opt )
&lt;br&gt;++
&lt;br&gt;++The rmtree() function provide the legacy interface of remove_tree()
&lt;br&gt;++with a different interpretation of the arguments passed. The behaviour
&lt;br&gt;++and return value of the function is otherwise identical to
&lt;br&gt;++remove_tree().
&lt;br&gt;+ 
&lt;br&gt;+ =back
&lt;br&gt;+ 
&lt;br&gt;+-It returns the number of files successfully deleted. &amp;nbsp;Symlinks are
&lt;br&gt;+-simply deleted and not followed.
&lt;br&gt;++=head2 ERROR HANDLING
&lt;br&gt;++
&lt;br&gt;++=over 4
&lt;br&gt;+ 
&lt;br&gt;+-B&amp;lt;NOTE:&amp;gt; There are race conditions internal to the implementation of
&lt;br&gt;+-C&amp;lt;rmtree&amp;gt; making it unsafe to use on directory trees which may be
&lt;br&gt;+-altered or moved while C&amp;lt;rmtree&amp;gt; is running, and in particular on any
&lt;br&gt;+-directory trees with any path components or subdirectories potentially
&lt;br&gt;+-writable by untrusted users.
&lt;br&gt;++=item B&amp;lt;NOTE:&amp;gt;
&lt;br&gt;++
&lt;br&gt;++The following error handling mechanism is considered
&lt;br&gt;++experimental and is subject to change pending feedback from
&lt;br&gt;++users.
&lt;br&gt;++
&lt;br&gt;++=back
&lt;br&gt;++
&lt;br&gt;++If C&amp;lt;make_path&amp;gt; or C&amp;lt;remove_tree&amp;gt; encounter an error, a diagnostic
&lt;br&gt;++message will be printed to C&amp;lt;STDERR&amp;gt; via C&amp;lt;carp&amp;gt; (for non-fatal
&lt;br&gt;++errors), or via C&amp;lt;croak&amp;gt; (for fatal errors).
&lt;br&gt;++
&lt;br&gt;++If this behaviour is not desirable, the C&amp;lt;error&amp;gt; attribute may be
&lt;br&gt;++used to hold a reference to a variable, which will be used to store
&lt;br&gt;++the diagnostics. The variable is made a reference to an array of hash
&lt;br&gt;++references. &amp;nbsp;Each hash contain a single key/value pair where the key
&lt;br&gt;++is the name of the file, and the value is the error message (including
&lt;br&gt;++the contents of C&amp;lt;$!&amp;gt; when appropriate). &amp;nbsp;If a general error is
&lt;br&gt;++encountered the diagnostic key will be empty.
&lt;br&gt;++
&lt;br&gt;++An example usage looks like:
&lt;br&gt;++
&lt;br&gt;++ &amp;nbsp;remove_tree( 'foo/bar', 'bar/rat', {error =&amp;gt; \my $err} );
&lt;br&gt;++ &amp;nbsp;if (@$err) {
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp;for my $diag (@$err) {
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;my ($file, $message) = %$diag;
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if ($file eq '') {
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;print &amp;quot;general error: $message\n&amp;quot;;
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;else {
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;print &amp;quot;problem unlinking $file: $message\n&amp;quot;;
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;++ &amp;nbsp;}
&lt;br&gt;++ &amp;nbsp;else {
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp;print &amp;quot;No error encountered\n&amp;quot;;
&lt;br&gt;++ &amp;nbsp;}
&lt;br&gt;+ 
&lt;br&gt;+-Additionally, if the third parameter is not TRUE and C&amp;lt;rmtree&amp;gt; is
&lt;br&gt;+-interrupted, it may leave files and directories with permissions altered
&lt;br&gt;+-to allow deletion (and older versions of this module would even set
&lt;br&gt;+-files and directories to world-read/writable!)
&lt;br&gt;++Note that if no errors are encountered, C&amp;lt;$err&amp;gt; will reference an
&lt;br&gt;++empty array. &amp;nbsp;This means that C&amp;lt;$err&amp;gt; will always end up TRUE; so you
&lt;br&gt;++need to test C&amp;lt;@$err&amp;gt; to determine if errors occured.
&lt;br&gt;+ 
&lt;br&gt;+-Note also that the occurrence of errors in C&amp;lt;rmtree&amp;gt; can be determined I&amp;lt;only&amp;gt;
&lt;br&gt;+-by trapping diagnostic messages using C&amp;lt;$SIG{__WARN__}&amp;gt;; it is not apparent
&lt;br&gt;+-from the return value.
&lt;br&gt;++=head2 NOTES
&lt;br&gt;++
&lt;br&gt;++C&amp;lt;File::Path&amp;gt; blindly exports C&amp;lt;mkpath&amp;gt; and C&amp;lt;rmtree&amp;gt; into the
&lt;br&gt;++current namespace. These days, this is considered bad style, but
&lt;br&gt;++to change it now would break too much code. Nonetheless, you are
&lt;br&gt;++invited to specify what it is you are expecting to use:
&lt;br&gt;++
&lt;br&gt;++ &amp;nbsp;use File::Path 'rmtree';
&lt;br&gt;++
&lt;br&gt;++The routines C&amp;lt;make_path&amp;gt; and C&amp;lt;remove_tree&amp;gt; are B&amp;lt;not&amp;gt; exported
&lt;br&gt;++by default. You must specify which ones you want to use.
&lt;br&gt;++
&lt;br&gt;++ &amp;nbsp;use File::Path 'remove_tree';
&lt;br&gt;++
&lt;br&gt;++Note that a side-effect of the above is that C&amp;lt;mkpath&amp;gt; and C&amp;lt;rmtree&amp;gt;
&lt;br&gt;++are no longer exported at all. This is due to the way the C&amp;lt;Exporter&amp;gt;
&lt;br&gt;++module works. If you are migrating a codebase to use the new
&lt;br&gt;++interface, you will have to list everything explicitly. But that's
&lt;br&gt;++just good practice anyway.
&lt;br&gt;++
&lt;br&gt;++ &amp;nbsp;use File::Path qw(remove_tree rmtree);
&lt;br&gt;++
&lt;br&gt;++=head3 SECURITY CONSIDERATIONS
&lt;br&gt;++
&lt;br&gt;++There were race conditions 1.x implementations of File::Path's
&lt;br&gt;++C&amp;lt;rmtree&amp;gt; function (although sometimes patched depending on the OS
&lt;br&gt;++distribution or platform). The 2.0 version contains code to avoid the
&lt;br&gt;++problem mentioned in CVE-2002-0435.
&lt;br&gt;++
&lt;br&gt;++See the following pages for more information:
&lt;br&gt;++
&lt;br&gt;++ &amp;nbsp;&lt;a href=&quot;http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=286905&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=286905&lt;/a&gt;&lt;br&gt;++ &amp;nbsp;&lt;a href=&quot;http://www.nntp.perl.org/group/perl.perl5.porters/2005/01/msg97623.html&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.nntp.perl.org/group/perl.perl5.porters/2005/01/msg97623.html&lt;/a&gt;&lt;br&gt;++ &amp;nbsp;&lt;a href=&quot;http://www.debian.org/security/2005/dsa-696&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.debian.org/security/2005/dsa-696&lt;/a&gt;&lt;br&gt;++
&lt;br&gt;++Additionally, unless the C&amp;lt;safe&amp;gt; parameter is set (or the
&lt;br&gt;++third parameter in the traditional interface is TRUE), should a
&lt;br&gt;++C&amp;lt;remove_tree&amp;gt; be interrupted, files that were originally in read-only
&lt;br&gt;++mode may now have their permissions set to a read-write (or &amp;quot;delete
&lt;br&gt;++OK&amp;quot;) mode.
&lt;br&gt;+ 
&lt;br&gt;+ =head1 DIAGNOSTICS
&lt;br&gt;+ 
&lt;br&gt;++FATAL errors will cause the program to halt (C&amp;lt;croak&amp;gt;), since the
&lt;br&gt;++problem is so severe that it would be dangerous to continue. (This
&lt;br&gt;++can always be trapped with C&amp;lt;eval&amp;gt;, but it's not a good idea. Under
&lt;br&gt;++the circumstances, dying is the best thing to do).
&lt;br&gt;++
&lt;br&gt;++SEVERE errors may be trapped using the modern interface. If the
&lt;br&gt;++they are not trapped, or the old interface is used, such an error
&lt;br&gt;++will cause the program will halt.
&lt;br&gt;++
&lt;br&gt;++All other errors may be trapped using the modern interface, otherwise
&lt;br&gt;++they will be C&amp;lt;carp&amp;gt;ed about. Program execution will not be halted.
&lt;br&gt;++
&lt;br&gt;++=over 4
&lt;br&gt;++
&lt;br&gt;++=item mkdir [path]: [errmsg] (SEVERE)
&lt;br&gt;++
&lt;br&gt;++C&amp;lt;make_path&amp;gt; was unable to create the path. Probably some sort of
&lt;br&gt;++permissions error at the point of departure, or insufficient resources
&lt;br&gt;++(such as free inodes on Unix).
&lt;br&gt;++
&lt;br&gt;++=item No root path(s) specified
&lt;br&gt;++
&lt;br&gt;++C&amp;lt;make_path&amp;gt; was not given any paths to create. This message is only
&lt;br&gt;++emitted if the routine is called with the traditional interface.
&lt;br&gt;++The modern interface will remain silent if given nothing to do.
&lt;br&gt;++
&lt;br&gt;++=item No such file or directory
&lt;br&gt;++
&lt;br&gt;++On Windows, if C&amp;lt;make_path&amp;gt; gives you this warning, it may mean that
&lt;br&gt;++you have exceeded your filesystem's maximum path length.
&lt;br&gt;++
&lt;br&gt;++=item cannot fetch initial working directory: [errmsg]
&lt;br&gt;++
&lt;br&gt;++C&amp;lt;remove_tree&amp;gt; attempted to determine the initial directory by calling
&lt;br&gt;++C&amp;lt;Cwd::getcwd&amp;gt;, but the call failed for some reason. No attempt
&lt;br&gt;++will be made to delete anything.
&lt;br&gt;++
&lt;br&gt;++=item cannot stat initial working directory: [errmsg]
&lt;br&gt;++
&lt;br&gt;++C&amp;lt;remove_tree&amp;gt; attempted to stat the initial directory (after having
&lt;br&gt;++successfully obtained its name via C&amp;lt;getcwd&amp;gt;), however, the call
&lt;br&gt;++failed for some reason. No attempt will be made to delete anything.
&lt;br&gt;++
&lt;br&gt;++=item cannot chdir to [dir]: [errmsg]
&lt;br&gt;++
&lt;br&gt;++C&amp;lt;remove_tree&amp;gt; attempted to set the working directory in order to
&lt;br&gt;++begin deleting the objects therein, but was unsuccessful. This is
&lt;br&gt;++usually a permissions issue. The routine will continue to delete
&lt;br&gt;++other things, but this directory will be left intact.
&lt;br&gt;++
&lt;br&gt;++=item directory [dir] changed before chdir, expected dev=[n] ino=[n], actual dev=[n] ino=[n], aborting. (FATAL)
&lt;br&gt;++
&lt;br&gt;++C&amp;lt;remove_tree&amp;gt; recorded the device and inode of a directory, and then
&lt;br&gt;++moved into it. It then performed a C&amp;lt;stat&amp;gt; on the current directory
&lt;br&gt;++and detected that the device and inode were no longer the same. As
&lt;br&gt;++this is at the heart of the race condition problem, the program
&lt;br&gt;++will die at this point.
&lt;br&gt;++
&lt;br&gt;++=item cannot make directory [dir] read+writeable: [errmsg]
&lt;br&gt;++
&lt;br&gt;++C&amp;lt;remove_tree&amp;gt; attempted to change the permissions on the current directory
&lt;br&gt;++to ensure that subsequent unlinkings would not run into problems,
&lt;br&gt;++but was unable to do so. The permissions remain as they were, and
&lt;br&gt;++the program will carry on, doing the best it can.
&lt;br&gt;++
&lt;br&gt;++=item cannot read [dir]: [errmsg]
&lt;br&gt;++
&lt;br&gt;++C&amp;lt;remove_tree&amp;gt; tried to read the contents of the directory in order
&lt;br&gt;++to acquire the names of the directory entries to be unlinked, but
&lt;br&gt;++was unsuccessful. This is usually a permissions issue. The
&lt;br&gt;++program will continue, but the files in this directory will remain
&lt;br&gt;++after the call.
&lt;br&gt;++
&lt;br&gt;++=item cannot reset chmod [dir]: [errmsg]
&lt;br&gt;++
&lt;br&gt;++C&amp;lt;remove_tree&amp;gt;, after having deleted everything in a directory, attempted
&lt;br&gt;++to restore its permissions to the original state but failed. The
&lt;br&gt;++directory may wind up being left behind.
&lt;br&gt;++
&lt;br&gt;++=item cannot remove [dir] when cwd is [dir]
&lt;br&gt;++
&lt;br&gt;++The current working directory of the program is F&amp;lt;/some/path/to/here&amp;gt;
&lt;br&gt;++and you are attempting to remove an ancestor, such as F&amp;lt;/some/path&amp;gt;.
&lt;br&gt;++The directory tree is left untouched.
&lt;br&gt;++
&lt;br&gt;++The solution is to C&amp;lt;chdir&amp;gt; out of the child directory to a place
&lt;br&gt;++outside the directory tree to be removed.
&lt;br&gt;++
&lt;br&gt;++=item cannot chdir to [parent-dir] from [child-dir]: [errmsg], aborting. (FATAL)
&lt;br&gt;++
&lt;br&gt;++C&amp;lt;remove_tree&amp;gt;, after having deleted everything and restored the permissions
&lt;br&gt;++of a directory, was unable to chdir back to the parent. The program
&lt;br&gt;++halts to avoid a race condition from occurring.
&lt;br&gt;++
&lt;br&gt;++=item cannot stat prior working directory [dir]: [errmsg], aborting. (FATAL)
&lt;br&gt;++
&lt;br&gt;++C&amp;lt;remove_tree&amp;gt; was unable to stat the parent directory after have returned
&lt;br&gt;++from the child. Since there is no way of knowing if we returned to
&lt;br&gt;++where we think we should be (by comparing device and inode) the only
&lt;br&gt;++way out is to C&amp;lt;croak&amp;gt;.
&lt;br&gt;++
&lt;br&gt;++=item previous directory [parent-dir] changed before entering [child-dir], expected dev=[n] ino=[n], actual dev=[n] ino=[n], aborting. (FATAL)
&lt;br&gt;++
&lt;br&gt;++When C&amp;lt;remove_tree&amp;gt; returned from deleting files in a child directory, a
&lt;br&gt;++check revealed that the parent directory it returned to wasn't the one
&lt;br&gt;++it started out from. This is considered a sign of malicious activity.
&lt;br&gt;++
&lt;br&gt;++=item cannot make directory [dir] writeable: [errmsg]
&lt;br&gt;++
&lt;br&gt;++Just before removing a directory (after having successfully removed
&lt;br&gt;++everything it contained), C&amp;lt;remove_tree&amp;gt; attempted to set the permissions
&lt;br&gt;++on the directory to ensure it could be removed and failed. Program
&lt;br&gt;++execution continues, but the directory may possibly not be deleted.
&lt;br&gt;++
&lt;br&gt;++=item cannot remove directory [dir]: [errmsg]
&lt;br&gt;++
&lt;br&gt;++C&amp;lt;remove_tree&amp;gt; attempted to remove a directory, but failed. This may because
&lt;br&gt;++some objects that were unable to be removed remain in the directory, or
&lt;br&gt;++a permissions issue. The directory will be left behind.
&lt;br&gt;++
&lt;br&gt;++=item cannot restore permissions of [dir] to [0nnn]: [errmsg]
&lt;br&gt;++
&lt;br&gt;++After having failed to remove a directory, C&amp;lt;remove_tree&amp;gt; was unable to
&lt;br&gt;++restore its permissions from a permissive state back to a possibly
&lt;br&gt;++more restrictive setting. (Permissions given in octal).
&lt;br&gt;++
&lt;br&gt;++=item cannot make file [file] writeable: [errmsg]
&lt;br&gt;++
&lt;br&gt;++C&amp;lt;remove_tree&amp;gt; attempted to force the permissions of a file to ensure it
&lt;br&gt;++could be deleted, but failed to do so. It will, however, still attempt
&lt;br&gt;++to unlink the file.
&lt;br&gt;++
&lt;br&gt;++=item cannot unlink file [file]: [errmsg]
&lt;br&gt;++
&lt;br&gt;++C&amp;lt;remove_tree&amp;gt; failed to remove a file. Probably a permissions issue.
&lt;br&gt;++
&lt;br&gt;++=item cannot restore permissions of [file] to [0nnn]: [errmsg]
&lt;br&gt;++
&lt;br&gt;++After having failed to remove a file, C&amp;lt;remove_tree&amp;gt; was also unable
&lt;br&gt;++to restore the permissions on the file to a possibly less permissive
&lt;br&gt;++setting. (Permissions given in octal).
&lt;br&gt;++
&lt;br&gt;++=back
&lt;br&gt;++
&lt;br&gt;++=head1 SEE ALSO
&lt;br&gt;++
&lt;br&gt;+ =over 4
&lt;br&gt;+ 
&lt;br&gt;+ =item *
&lt;br&gt;+ 
&lt;br&gt;+-On Windows, if C&amp;lt;mkpath&amp;gt; gives you the warning: B&amp;lt;No such file or
&lt;br&gt;+-directory&amp;gt;, this may mean that you've exceeded your filesystem's
&lt;br&gt;+-maximum path length.
&lt;br&gt;++L&amp;lt;File::Remove&amp;gt;
&lt;br&gt;++
&lt;br&gt;++Allows files and directories to be moved to the Trashcan/Recycle
&lt;br&gt;++Bin (where they may later be restored if necessary) if the operating
&lt;br&gt;++system supports such functionality. This feature may one day be
&lt;br&gt;++made available directly in C&amp;lt;File::Path&amp;gt;.
&lt;br&gt;++
&lt;br&gt;++=item *
&lt;br&gt;++
&lt;br&gt;++L&amp;lt;File::Find::Rule&amp;gt;
&lt;br&gt;++
&lt;br&gt;++When removing directory trees, if you want to examine each file to
&lt;br&gt;++decide whether to delete it (and possibly leaving large swathes
&lt;br&gt;++alone), F&amp;lt;File::Find::Rule&amp;gt; offers a convenient and flexible approach
&lt;br&gt;++to examining directory trees.
&lt;br&gt;+ 
&lt;br&gt;+ =back
&lt;br&gt;+ 
&lt;br&gt;+-=head1 AUTHORS
&lt;br&gt;++=head1 BUGS
&lt;br&gt;+ 
&lt;br&gt;+-Tim Bunce &amp;lt;F&amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=20764358&amp;i=2&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Tim.Bunce@...&lt;/a&gt;&amp;gt;&amp;gt; and
&lt;br&gt;+-Charles Bailey &amp;lt;F&amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=20764358&amp;i=3&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;bailey@...&lt;/a&gt;&amp;gt;&amp;gt;
&lt;br&gt;++Please report all bugs on the RT queue:
&lt;br&gt;+ 
&lt;br&gt;+-=cut
&lt;br&gt;++L&amp;lt;&lt;a href=&quot;http://rt.cpan.org/NoAuth/Bugs.html?Dist=File-Path&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://rt.cpan.org/NoAuth/Bugs.html?Dist=File-Path&lt;/a&gt;&amp;gt;
&lt;br&gt;+ 
&lt;br&gt;+-use 5.006;
&lt;br&gt;+-use Carp;
&lt;br&gt;+-use File::Basename ();
&lt;br&gt;+-use Exporter ();
&lt;br&gt;+-use strict;
&lt;br&gt;+-use warnings;
&lt;br&gt;++=head1 ACKNOWLEDGEMENTS
&lt;br&gt;+ 
&lt;br&gt;+-our $VERSION = &amp;quot;1.08&amp;quot;;
&lt;br&gt;+-our @ISA = qw( Exporter );
&lt;br&gt;+-our @EXPORT = qw( mkpath rmtree );
&lt;br&gt;++Paul Szabo identified the race condition originally, and Brendan
&lt;br&gt;++O'Dea wrote an implementation for Debian that addressed the problem.
&lt;br&gt;++That code was used as a basis for the current code. Their efforts
&lt;br&gt;++are greatly appreciated.
&lt;br&gt;+ 
&lt;br&gt;+-my $Is_VMS = $^O eq 'VMS';
&lt;br&gt;+-my $Is_MacOS = $^O eq 'MacOS';
&lt;br&gt;++Gisle Aas made a number of improvements to the documentation for
&lt;br&gt;++2.07 and his advice and assistance is also greatly appreciated.
&lt;br&gt;+ 
&lt;br&gt;+-# These OSes complain if you want to remove a file that you have no
&lt;br&gt;+-# write permission to:
&lt;br&gt;+-my $force_writeable = ($^O eq 'os2' || $^O eq 'dos' || $^O eq 'MSWin32' ||
&lt;br&gt;+-		 &amp;nbsp; &amp;nbsp; &amp;nbsp; $^O eq 'amigaos' || $^O eq 'MacOS' || $^O eq 'epoc');
&lt;br&gt;++=head1 AUTHORS
&lt;br&gt;+ 
&lt;br&gt;+-sub mkpath {
&lt;br&gt;+- &amp;nbsp; &amp;nbsp;my($paths, $verbose, $mode) = @_;
&lt;br&gt;+- &amp;nbsp; &amp;nbsp;# $paths &amp;nbsp; -- either a path string or ref to list of paths
&lt;br&gt;+- &amp;nbsp; &amp;nbsp;# $verbose -- optional print &amp;quot;mkdir $path&amp;quot; for each directory created
&lt;br&gt;+- &amp;nbsp; &amp;nbsp;# $mode &amp;nbsp; &amp;nbsp;-- optional permissions, defaults to 0777
&lt;br&gt;+- &amp;nbsp; &amp;nbsp;local($&amp;quot;)=$Is_MacOS ? &amp;quot;:&amp;quot; : &amp;quot;/&amp;quot;;
&lt;br&gt;+- &amp;nbsp; &amp;nbsp;$mode = 0777 unless defined($mode);
&lt;br&gt;+- &amp;nbsp; &amp;nbsp;$paths = [$paths] unless ref $paths;
&lt;br&gt;+- &amp;nbsp; &amp;nbsp;my(@created,$path);
&lt;br&gt;+- &amp;nbsp; &amp;nbsp;foreach $path (@$paths) {
&lt;br&gt;+-	$path .= '/' if $^O eq 'os2' and $path =~ /^\w:\z/s; # feature of CRT 
&lt;br&gt;+-	# Logic wants Unix paths, so go with the flow.
&lt;br&gt;+-	if ($Is_VMS) {
&lt;br&gt;+-	 &amp;nbsp; &amp;nbsp;next if $path eq '/';
&lt;br&gt;+-	 &amp;nbsp; &amp;nbsp;$path = VMS::Filespec::unixify($path);
&lt;br&gt;+-	 &amp;nbsp; &amp;nbsp;if ($path =~ m:^(/[^/]+)/?\z:) {
&lt;br&gt;+-	 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;$path = $1.'/000000';
&lt;br&gt;+-	 &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+-	}
&lt;br&gt;+-	next if -d $path;
&lt;br&gt;+-	my $parent = File::Basename::dirname($path);
&lt;br&gt;+-	unless (-d $parent or $path eq $parent) {
&lt;br&gt;+-	 &amp;nbsp; &amp;nbsp;push(@created,mkpath($parent, $verbose, $mode));
&lt;br&gt;+- 	}
&lt;br&gt;+-	print &amp;quot;mkdir $path\n&amp;quot; if $verbose;
&lt;br&gt;+-	unless (mkdir($path,$mode)) {
&lt;br&gt;+-	 &amp;nbsp; &amp;nbsp;my $e = $!;
&lt;br&gt;+-	 &amp;nbsp; &amp;nbsp;# allow for another process to have created it meanwhile
&lt;br&gt;+-	 &amp;nbsp; &amp;nbsp;$! = $e, croak (&amp;quot;mkdir $path: $e&amp;quot;) unless -d $path;
&lt;br&gt;+-	}
&lt;br&gt;+-	push(@created, $path);
&lt;br&gt;+- &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+- &amp;nbsp; &amp;nbsp;@created;
&lt;br&gt;+-}
&lt;br&gt;++Tim Bunce and Charles Bailey. Currently maintained by David Landgren
&lt;br&gt;++&amp;lt;F&amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=20764358&amp;i=4&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;david@...&lt;/a&gt;&amp;gt;&amp;gt;.
&lt;br&gt;+ 
&lt;br&gt;+-sub rmtree {
&lt;br&gt;+- &amp;nbsp; &amp;nbsp;my($roots, $verbose, $safe) = @_;
&lt;br&gt;+- &amp;nbsp; &amp;nbsp;my(@files);
&lt;br&gt;+- &amp;nbsp; &amp;nbsp;my($count) = 0;
&lt;br&gt;+- &amp;nbsp; &amp;nbsp;$verbose ||= 0;
&lt;br&gt;+- &amp;nbsp; &amp;nbsp;$safe ||= 0;
&lt;br&gt;+-
&lt;br&gt;+- &amp;nbsp; &amp;nbsp;if ( defined($roots) &amp;&amp; length($roots) ) {
&lt;br&gt;+- &amp;nbsp; &amp;nbsp; &amp;nbsp;$roots = [$roots] unless ref $roots;
&lt;br&gt;+- &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+- &amp;nbsp; &amp;nbsp;else {
&lt;br&gt;+- &amp;nbsp; &amp;nbsp; &amp;nbsp;carp &amp;quot;No root path(s) specified\n&amp;quot;;
&lt;br&gt;+- &amp;nbsp; &amp;nbsp; &amp;nbsp;return 0;
&lt;br&gt;+- &amp;nbsp; &amp;nbsp;}
&lt;br&gt;++=head1 COPYRIGHT
&lt;br&gt;+ 
&lt;br&gt;+- &amp;nbsp; &amp;nbsp;my($root);
&lt;br&gt;+- &amp;nbsp; &amp;nbsp;foreach $root (@{$roots}) {
&lt;br&gt;+- &amp;nbsp; &amp;nbsp;	if ($Is_MacOS) {
&lt;br&gt;+-	 &amp;nbsp; &amp;nbsp;$root = &amp;quot;:$root&amp;quot; if $root !~ /:/;
&lt;br&gt;+-	 &amp;nbsp; &amp;nbsp;$root =~ s#([^:])\z#$1:#;
&lt;br&gt;+-	} else {
&lt;br&gt;+-	 &amp;nbsp; &amp;nbsp;$root =~ s#/\z##;
&lt;br&gt;+-	}
&lt;br&gt;+-	(undef, undef, my $rp) = lstat $root or next;
&lt;br&gt;+-	$rp &amp;= 07777;	# don't forget setuid, setgid, sticky bits
&lt;br&gt;+-	if ( -d _ ) {
&lt;br&gt;+-	 &amp;nbsp; &amp;nbsp;# notabene: 0700 is for making readable in the first place,
&lt;br&gt;+-	 &amp;nbsp; &amp;nbsp;# it's also intended to change it to writable in case we have
&lt;br&gt;+-	 &amp;nbsp; &amp;nbsp;# to recurse in which case we are better than rm -rf for 
&lt;br&gt;+-	 &amp;nbsp; &amp;nbsp;# subtrees with strange permissions
&lt;br&gt;+-	 &amp;nbsp; &amp;nbsp;chmod($rp | 0700, ($Is_VMS ? VMS::Filespec::fileify($root) : $root))
&lt;br&gt;+-	 &amp;nbsp; &amp;nbsp; &amp;nbsp;or carp &amp;quot;Can't make directory $root read+writeable: $!&amp;quot;
&lt;br&gt;+-		unless $safe;
&lt;br&gt;+-
&lt;br&gt;+-	 &amp;nbsp; &amp;nbsp;if (opendir my $d, $root) {
&lt;br&gt;+-		no strict 'refs';
&lt;br&gt;+-		if (!defined ${&amp;quot;\cTAINT&amp;quot;} or ${&amp;quot;\cTAINT&amp;quot;}) {
&lt;br&gt;+-		 &amp;nbsp; &amp;nbsp;# Blindly untaint dir names
&lt;br&gt;+-		 &amp;nbsp; &amp;nbsp;@files = map { /^(.*)$/s ; $1 } readdir $d;
&lt;br&gt;+-		} else {
&lt;br&gt;+-		 &amp;nbsp; &amp;nbsp;@files = readdir $d;
&lt;br&gt;+-		}
&lt;br&gt;+-		closedir $d;
&lt;br&gt;+-	 &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+-	 &amp;nbsp; &amp;nbsp;else {
&lt;br&gt;+-	 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;carp &amp;quot;Can't read $root: $!&amp;quot;;
&lt;br&gt;+-		@files = ();
&lt;br&gt;+-	 &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+-
&lt;br&gt;+-	 &amp;nbsp; &amp;nbsp;# Deleting large numbers of files from VMS Files-11 filesystems
&lt;br&gt;+-	 &amp;nbsp; &amp;nbsp;# is faster if done in reverse ASCIIbetical order 
&lt;br&gt;+-	 &amp;nbsp; &amp;nbsp;@files = reverse @files if $Is_VMS;
&lt;br&gt;+-	 &amp;nbsp; &amp;nbsp;($root = VMS::Filespec::unixify($root)) =~ s#\.dir\z## if $Is_VMS;
&lt;br&gt;+-	 &amp;nbsp; &amp;nbsp;if ($Is_MacOS) {
&lt;br&gt;+-		@files = map(&amp;quot;$root$_&amp;quot;, @files);
&lt;br&gt;+-	 &amp;nbsp; &amp;nbsp;} else {
&lt;br&gt;+-		@files = map(&amp;quot;$root/$_&amp;quot;, grep $_!~/^\.{1,2}\z/s,@files);
&lt;br&gt;+-	 &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+-	 &amp;nbsp; &amp;nbsp;$count += rmtree(\@files,$verbose,$safe);
&lt;br&gt;+-	 &amp;nbsp; &amp;nbsp;if ($safe &amp;&amp;
&lt;br&gt;+-		($Is_VMS ? !&amp;VMS::Filespec::candelete($root) : !-w $root)) {
&lt;br&gt;+-		print &amp;quot;skipped $root\n&amp;quot; if $verbose;
&lt;br&gt;+-		next;
&lt;br&gt;+-	 &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+-	 &amp;nbsp; &amp;nbsp;chmod $rp | 0700, $root
&lt;br&gt;+-	 &amp;nbsp; &amp;nbsp; &amp;nbsp;or carp &amp;quot;Can't make directory $root writeable: $!&amp;quot;
&lt;br&gt;+-		if $force_writeable;
&lt;br&gt;+-	 &amp;nbsp; &amp;nbsp;print &amp;quot;rmdir $root\n&amp;quot; if $verbose;
&lt;br&gt;+-	 &amp;nbsp; &amp;nbsp;if (rmdir $root) {
&lt;br&gt;+-		++$count;
&lt;br&gt;+-	 &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+-	 &amp;nbsp; &amp;nbsp;else {
&lt;br&gt;+-		carp &amp;quot;Can't remove directory $root: $!&amp;quot;;
&lt;br&gt;+-		chmod($rp, ($Is_VMS ? VMS::Filespec::fileify($root) : $root))
&lt;br&gt;+-		 &amp;nbsp; &amp;nbsp;or carp(&amp;quot;and can't restore permissions to &amp;quot;
&lt;br&gt;+-		 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;. sprintf(&amp;quot;0%o&amp;quot;,$rp) . &amp;quot;\n&amp;quot;);
&lt;br&gt;+-	 &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+-	}
&lt;br&gt;+-	else { 
&lt;br&gt;+-	 &amp;nbsp; &amp;nbsp;if ($safe &amp;&amp;
&lt;br&gt;+-		($Is_VMS ? !&amp;VMS::Filespec::candelete($root)
&lt;br&gt;+-		 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; : !(-l $root || -w $root)))
&lt;br&gt;+-	 &amp;nbsp; &amp;nbsp;{
&lt;br&gt;+-		print &amp;quot;skipped $root\n&amp;quot; if $verbose;
&lt;br&gt;+-		next;
&lt;br&gt;+-	 &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+-	 &amp;nbsp; &amp;nbsp;chmod $rp | 0600, $root
&lt;br&gt;+-	 &amp;nbsp; &amp;nbsp; &amp;nbsp;or carp &amp;quot;Can't make file $root writeable: $!&amp;quot;
&lt;br&gt;+-		if $force_writeable;
&lt;br&gt;+-	 &amp;nbsp; &amp;nbsp;print &amp;quot;unlink $root\n&amp;quot; if $verbose;
&lt;br&gt;+-	 &amp;nbsp; &amp;nbsp;# delete all versions under VMS
&lt;br&gt;+-	 &amp;nbsp; &amp;nbsp;for (;;) {
&lt;br&gt;+-		unless (unlink $root) {
&lt;br&gt;+-		 &amp;nbsp; &amp;nbsp;carp &amp;quot;Can't unlink file $root: $!&amp;quot;;
&lt;br&gt;+-		 &amp;nbsp; &amp;nbsp;if ($force_writeable) {
&lt;br&gt;+-			chmod $rp, $root
&lt;br&gt;+-			 &amp;nbsp; &amp;nbsp;or carp(&amp;quot;and can't restore permissions to &amp;quot;
&lt;br&gt;+-			 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;. sprintf(&amp;quot;0%o&amp;quot;,$rp) . &amp;quot;\n&amp;quot;);
&lt;br&gt;+-		 &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+-		 &amp;nbsp; &amp;nbsp;last;
&lt;br&gt;+-		}
&lt;br&gt;+-		++$count;
&lt;br&gt;+-		last unless $Is_VMS &amp;&amp; lstat $root;
&lt;br&gt;+-	 &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+-	}
&lt;br&gt;+- &amp;nbsp; &amp;nbsp;}
&lt;br&gt;++This module is copyright (C) Charles Bailey, Tim Bunce and
&lt;br&gt;++David Landgren 1995-2008. All rights reserved.
&lt;br&gt;+ 
&lt;br&gt;+- &amp;nbsp; &amp;nbsp;$count;
&lt;br&gt;+-}
&lt;br&gt;++=head1 LICENSE
&lt;br&gt;+ 
&lt;br&gt;+-1;
&lt;br&gt;++This library is free software; you can redistribute it and/or modify
&lt;br&gt;++it under the same terms as Perl itself.
&lt;br&gt;++
&lt;br&gt;++=cut
&lt;br&gt;+diff --git a/lib/File/Path.t b/lib/File/Path.t
&lt;br&gt;+index 84575d7..f1b5928 100755
&lt;br&gt;+--- lib/File/Path.t
&lt;br&gt;++++ lib/File/Path.t
&lt;br&gt;+@@ -1,18 +1,18 @@
&lt;br&gt;+-#!./perl -wT
&lt;br&gt;++# Path.t -- tests for module File::Path
&lt;br&gt;++
&lt;br&gt;++use strict;
&lt;br&gt;++
&lt;br&gt;++use Test::More tests =&amp;gt; 99;
&lt;br&gt;+ 
&lt;br&gt;+ BEGIN {
&lt;br&gt;+- &amp;nbsp; &amp;nbsp;chdir 't' if -d 't';
&lt;br&gt;+- &amp;nbsp; &amp;nbsp;@INC = '../lib';
&lt;br&gt;++ &amp;nbsp; &amp;nbsp;use_ok('File::Path');
&lt;br&gt;++ &amp;nbsp; &amp;nbsp;use_ok('File::Spec::Functions');
&lt;br&gt;+ }
&lt;br&gt;+ 
&lt;br&gt;+-use File::Path;
&lt;br&gt;+-use File::Spec::Functions;
&lt;br&gt;+-use strict;
&lt;br&gt;+-
&lt;br&gt;+-my $count = 0;
&lt;br&gt;+-use warnings;
&lt;br&gt;++eval &amp;quot;use Test::Output&amp;quot;;
&lt;br&gt;++my $has_Test_Output = $@ ? 0 : 1;
&lt;br&gt;+ 
&lt;br&gt;+-print &amp;quot;1..4\n&amp;quot;;
&lt;br&gt;++my $Is_VMS &amp;nbsp; = $^O eq 'VMS';
&lt;br&gt;+ 
&lt;br&gt;+ # first check for stupid permissions second for full, so we clean up
&lt;br&gt;+ # behind ourselves
&lt;br&gt;+@@ -21,10 +21,411 @@ for my $perm (0111,0777) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; mkpath($path);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; chmod $perm, &amp;quot;mhx&amp;quot;, $path;
&lt;br&gt;+ 
&lt;br&gt;+- &amp;nbsp; &amp;nbsp;print &amp;quot;not &amp;quot; unless -d &amp;quot;mhx&amp;quot; &amp;&amp; -d $path;
&lt;br&gt;+- &amp;nbsp; &amp;nbsp;print &amp;quot;ok &amp;quot;, ++$count, &amp;quot;\n&amp;quot;;
&lt;br&gt;++ &amp;nbsp; &amp;nbsp;my $oct = sprintf('0%o', $perm);
&lt;br&gt;++ &amp;nbsp; &amp;nbsp;ok(-d &amp;quot;mhx&amp;quot;, &amp;quot;mkdir parent dir $oct&amp;quot;);
&lt;br&gt;++ &amp;nbsp; &amp;nbsp;ok(-d $path, &amp;quot;mkdir child dir $oct&amp;quot;);
&lt;br&gt;+ 
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; rmtree(&amp;quot;mhx&amp;quot;);
&lt;br&gt;+- &amp;nbsp; &amp;nbsp;print &amp;quot;not &amp;quot; if -e &amp;quot;mhx&amp;quot;;
&lt;br&gt;+- &amp;nbsp; &amp;nbsp;print &amp;quot;ok &amp;quot;, ++$count, &amp;quot;\n&amp;quot;;
&lt;br&gt;++ &amp;nbsp; &amp;nbsp;ok(! -e &amp;quot;mhx&amp;quot;, &amp;quot;mhx does not exist $oct&amp;quot;);
&lt;br&gt;++}
&lt;br&gt;++
&lt;br&gt;++# find a place to work
&lt;br&gt;++my ($error, $list, $file, $message);
&lt;br&gt;++my $tmp_base = catdir(
&lt;br&gt;++ &amp;nbsp; &amp;nbsp;curdir(),
&lt;br&gt;++ &amp;nbsp; &amp;nbsp;sprintf( 'test-%x-%x-%x', time, $$, rand(99999) ),
&lt;br&gt;++);
&lt;br&gt;++
&lt;br&gt;++# invent some names
&lt;br&gt;++my @dir = (
&lt;br&gt;++ &amp;nbsp; &amp;nbsp;catdir($tmp_base, qw(a b)),
&lt;br&gt;++ &amp;nbsp; &amp;nbsp;catdir($tmp_base, qw(a c)),
&lt;br&gt;++ &amp;nbsp; &amp;nbsp;catdir($tmp_base, qw(z b)),
&lt;br&gt;++ &amp;nbsp; &amp;nbsp;catdir($tmp_base, qw(z c)),
&lt;br&gt;++);
&lt;br&gt;++
&lt;br&gt;++# create them
&lt;br&gt;++my @created = mkpath(@dir);
&lt;br&gt;++
&lt;br&gt;++is(scalar(@created), 7, &amp;quot;created list of directories&amp;quot;);
&lt;br&gt;++
&lt;br&gt;++# pray for no race conditions blowing them out from under us
&lt;br&gt;++@created = mkpath([$tmp_base]);
&lt;br&gt;++is(scalar(@created), 0, &amp;quot;skipped making existing directory&amp;quot;)
&lt;br&gt;++ &amp;nbsp; &amp;nbsp;or diag(&amp;quot;unexpectedly recreated @created&amp;quot;);
&lt;br&gt;++
&lt;br&gt;++# create a file
&lt;br&gt;++my $file_name = catfile( $tmp_base, 'a', 'delete.me' );
&lt;br&gt;++my $file_count = 0;
&lt;br&gt;++if (open OUT, &amp;quot;&amp;gt; $file_name&amp;quot;) {
&lt;br&gt;++ &amp;nbsp; &amp;nbsp;print OUT &amp;quot;this file may be deleted\n&amp;quot;;
&lt;br&gt;++ &amp;nbsp; &amp;nbsp;close OUT;
&lt;br&gt;++ &amp;nbsp; &amp;nbsp;++$file_count;
&lt;br&gt;+ }
&lt;br&gt;++else {
&lt;br&gt;++ &amp;nbsp; &amp;nbsp;diag( &amp;quot;Failed to create file $file_name: $!&amp;quot; );
&lt;br&gt;++}
&lt;br&gt;++
&lt;br&gt;++SKIP: {
&lt;br&gt;++ &amp;nbsp; &amp;nbsp;skip &amp;quot;cannot remove a file we failed to create&amp;quot;, 1
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;unless $file_count == 1;
&lt;br&gt;++ &amp;nbsp; &amp;nbsp;my $count = rmtree($file_name);
&lt;br&gt;++ &amp;nbsp; &amp;nbsp;is($count, 1, &amp;quot;rmtree'ed a file&amp;quot;);
&lt;br&gt;++}
&lt;br&gt;++
&lt;br&gt;++@created = mkpath('');
&lt;br&gt;++is(scalar(@created), 0, &amp;quot;Can't create a directory named ''&amp;quot;);
&lt;br&gt;++
&lt;br&gt;++my $dir;
&lt;br&gt;++my $dir2;
&lt;br&gt;++
&lt;br&gt;++SKIP: {
&lt;br&gt;++ &amp;nbsp; &amp;nbsp;$dir = catdir($tmp_base, 'B');
&lt;br&gt;++ &amp;nbsp; &amp;nbsp;$dir2 = catdir($dir, updir());
&lt;br&gt;++ &amp;nbsp; &amp;nbsp;# IOW: File::Spec-&amp;gt;catdir( qw(foo bar), File::Spec-&amp;gt;updir ) eq 'foo'
&lt;br&gt;++ &amp;nbsp; &amp;nbsp;# rather than foo/bar/.. &amp;nbsp; &amp;nbsp;
&lt;br&gt;++ &amp;nbsp; &amp;nbsp;skip &amp;quot;updir() canonicalises path on this platform&amp;quot;, 2
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if $dir2 eq $tmp_base
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;or $^O eq 'cygwin';
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;++ &amp;nbsp; &amp;nbsp;@created = mkpath($dir2, {mask =&amp;gt; 0700});
&lt;br&gt;++ &amp;nbsp; &amp;nbsp;is(scalar(@created), 1, &amp;quot;make directory with trailing parent segment&amp;quot;);
&lt;br&gt;++ &amp;nbsp; &amp;nbsp;is($created[0], $dir, &amp;quot;made parent&amp;quot;);
&lt;br&gt;++};
&lt;br&gt;++
&lt;br&gt;++my $count = rmtree({error =&amp;gt; \$error});
&lt;br&gt;++is( $count, 0, 'rmtree of nothing, count of zero' );
&lt;br&gt;++is( scalar(@$error), 0, 'no diagnostic captured' );
&lt;br&gt;++
&lt;br&gt;++@created = mkpath($tmp_base, 0);
&lt;br&gt;++is(scalar(@created), 0, &amp;quot;skipped making existing directories (old style 1)&amp;quot;)
&lt;br&gt;++ &amp;nbsp; &amp;nbsp;or diag(&amp;quot;unexpectedly recreated @created&amp;quot;);
&lt;br&gt;++
&lt;br&gt;++$dir = catdir($tmp_base,'C');
&lt;br&gt;++# mkpath returns unix syntax filespecs on VMS
&lt;br&gt;++$dir = VMS::Filespec::unixify($dir) if $Is_VMS;
&lt;br&gt;++@created = mkpath($tmp_base, $dir);
&lt;br&gt;++is(scalar(@created), 1, &amp;quot;created directory (new style 1)&amp;quot;);
&lt;br&gt;++is($created[0], $dir, &amp;quot;created directory (new style 1) cross-check&amp;quot;);
&lt;br&gt;++
&lt;br&gt;++@created = mkpath($tmp_base, 0, 0700);
&lt;br&gt;++is(scalar(@created), 0, &amp;quot;skipped making existing directories (old style 2)&amp;quot;)
&lt;br&gt;++ &amp;nbsp; &amp;nbsp;or diag(&amp;quot;unexpectedly recreated @created&amp;quot;);
&lt;br&gt;++
&lt;br&gt;++$dir2 = catdir($tmp_base,'D');
&lt;br&gt;++# mkpath returns unix syntax filespecs on VMS
&lt;br&gt;++$dir2 = VMS::Filespec::unixify($dir2) if $Is_VMS;
&lt;br&gt;++@created = mkpath($tmp_base, $dir, $dir2);
&lt;br&gt;++is(scalar(@created), 1, &amp;quot;created directory (new style 2)&amp;quot;);
&lt;br&gt;++is($created[0], $dir2, &amp;quot;created directory (new style 2) cross-check&amp;quot;);
&lt;br&gt;++
&lt;br&gt;++$count = rmtree($dir, 0);
&lt;br&gt;++is($count, 1, &amp;quot;removed directory unsafe mode&amp;quot;);
&lt;br&gt;++
&lt;br&gt;++$count = rmtree($dir2, 0, 1);
&lt;br&gt;++my $removed = $Is_VMS ? 0 : 1;
&lt;br&gt;++is($count, $removed, &amp;quot;removed directory safe mode&amp;quot;);
&lt;br&gt;++
&lt;br&gt;++# mkdir foo ./E/../Y
&lt;br&gt;++# Y should exist
&lt;br&gt;++# existence of E is neither here nor there
&lt;br&gt;++$dir = catdir($tmp_base, 'E', updir(), 'Y');
&lt;br&gt;++@created =mkpath($dir);
&lt;br&gt;++cmp_ok(scalar(@created), '&amp;gt;=', 1, &amp;quot;made one or more dirs because of ..&amp;quot;);
&lt;br&gt;++cmp_ok(scalar(@created), '&amp;lt;=', 2, &amp;quot;made less than two dirs because of ..&amp;quot;);
&lt;br&gt;++ok( -d catdir($tmp_base, 'Y'), &amp;quot;directory after parent&amp;quot; );
&lt;br&gt;++
&lt;br&gt;++@created = mkpath(catdir(curdir(), $tmp_base));
&lt;br&gt;++is(scalar(@created), 0, &amp;quot;nothing created&amp;quot;)
&lt;br&gt;++ &amp;nbsp; &amp;nbsp;or diag(@created);
&lt;br&gt;++
&lt;br&gt;++$dir &amp;nbsp;= catdir($tmp_base, 'a');
&lt;br&gt;++$dir2 = catdir($tmp_base, 'z');
&lt;br&gt;++
&lt;br&gt;++rmtree( $dir, $dir2,
&lt;br&gt;++ &amp;nbsp; &amp;nbsp;{
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;error &amp;nbsp; &amp;nbsp; =&amp;gt; \$error,
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;result &amp;nbsp; &amp;nbsp;=&amp;gt; \$list,
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;keep_root =&amp;gt; 1,
&lt;br&gt;++ &amp;nbsp; &amp;nbsp;}
&lt;br&gt;++);
&lt;br&gt;++
&lt;br&gt;++is(scalar(@$error), 0, &amp;quot;no errors unlinking a and z&amp;quot;);
&lt;br&gt;++is(scalar(@$list), &amp;nbsp;4, &amp;quot;list contains 4 elements&amp;quot;)
&lt;br&gt;++ &amp;nbsp; &amp;nbsp;or diag(&amp;quot;@$list&amp;quot;);
&lt;br&gt;++
&lt;br&gt;++ok(-d $dir, &amp;nbsp;&amp;quot;dir a still exists&amp;quot;);
&lt;br&gt;++ok(-d $dir2, &amp;quot;dir z still exists&amp;quot;);
&lt;br&gt;++
&lt;br&gt;++$dir = catdir($tmp_base,'F');
&lt;br&gt;++# mkpath returns unix syntax filespecs on VMS
&lt;br&gt;++$dir = VMS::Filespec::unixify($dir) if $Is_VMS;
&lt;br&gt;++
&lt;br&gt;++@created = mkpath($dir, undef, 0770);
&lt;br&gt;++is(scalar(@created), 1, &amp;quot;created directory (old style 2 verbose undef)&amp;quot;);
&lt;br&gt;++is($created[0], $dir, &amp;quot;created directory (old style 2 verbose undef) cross-check&amp;quot;);
&lt;br&gt;++is(rmtree($dir, undef, 0), 1, &amp;quot;removed directory 2 verbose undef&amp;quot;);
&lt;br&gt;++
&lt;br&gt;++@created = mkpath($dir, undef);
&lt;br&gt;++is(scalar(@created), 1, &amp;quot;created directory (old style 2a verbose undef)&amp;quot;);
&lt;br&gt;++is($created[0], $dir, &amp;quot;created directory (old style 2a verbose undef) cross-check&amp;quot;);
&lt;br&gt;++is(rmtree($dir, undef), 1, &amp;quot;removed directory 2a verbose undef&amp;quot;);
&lt;br&gt;++
&lt;br&gt;++@created = mkpath($dir, 0, undef);
&lt;br&gt;++is(scalar(@created), 1, &amp;quot;created directory (old style 3 mode undef)&amp;quot;);
&lt;br&gt;++is($created[0], $dir, &amp;quot;created directory (old style 3 mode undef) cross-check&amp;quot;);
&lt;br&gt;++is(rmtree($dir, 0, undef), 1, &amp;quot;removed directory 3 verbose undef&amp;quot;);
&lt;br&gt;++
&lt;br&gt;++$dir = catdir($tmp_base,'G');
&lt;br&gt;++$dir = VMS::Filespec::unixify($dir) if $Is_VMS;
&lt;br&gt;++
&lt;br&gt;++@created = mkpath($dir, undef, 0200);
&lt;br&gt;++is(scalar(@created), 1, &amp;quot;created write-only dir&amp;quot;);
&lt;br&gt;++is($created[0], $dir, &amp;quot;created write-only directory cross-check&amp;quot;);
&lt;br&gt;++is(rmtree($dir), 1, &amp;quot;removed write-only dir&amp;quot;);
&lt;br&gt;++
&lt;br&gt;++# borderline new-style heuristics
&lt;br&gt;++if (chdir $tmp_base) {
&lt;br&gt;++ &amp;nbsp; &amp;nbsp;pass(&amp;quot;chdir to temp dir&amp;quot;);
&lt;br&gt;++}
&lt;br&gt;++else {
&lt;br&gt;++ &amp;nbsp; &amp;nbsp;fail(&amp;quot;chdir to temp dir: $!&amp;quot;);
&lt;br&gt;++}
&lt;br&gt;++
&lt;br&gt;++$dir &amp;nbsp; = catdir('a', 'd1');
&lt;br&gt;++$dir2 &amp;nbsp;= catdir('a', 'd2');
&lt;br&gt;++
&lt;br&gt;++@created = mkpath( $dir, 0, $dir2 );
&lt;br&gt;++is(scalar @created, 3, 'new-style 3 dirs created');
&lt;br&gt;++
&lt;br&gt;++$count = rmtree( $dir, 0, $dir2, );
&lt;br&gt;++is($count, 3, 'new-style 3 dirs removed');
&lt;br&gt;++
&lt;br&gt;++@created = mkpath( $dir, $dir2, 1 );
&lt;br&gt;++is(scalar @created, 3, 'new-style 3 dirs created (redux)');
&lt;br&gt;++
&lt;br&gt;++$count = rmtree( $dir, $dir2, 1 );
&lt;br&gt;++is($count, 3, 'new-style 3 dirs removed (redux)');
&lt;br&gt;++
&lt;br&gt;++@created = mkpath( $dir, $dir2 );
&lt;br&gt;++is(scalar @created, 2, 'new-style 2 dirs created');
&lt;br&gt;++
&lt;br&gt;++$count = rmtree( $dir, $dir2 );
&lt;br&gt;++is($count, 2, 'new-style 2 dirs removed');
&lt;br&gt;++
&lt;br&gt;++if (chdir updir()) {
&lt;br&gt;++ &amp;nbsp; &amp;nbsp;pass(&amp;quot;chdir parent&amp;quot;);
&lt;br&gt;++}
&lt;br&gt;++else {
&lt;br&gt;++ &amp;nbsp; &amp;nbsp;fail(&amp;quot;chdir parent: $!&amp;quot;);
&lt;br&gt;++}
&lt;br&gt;++
&lt;br&gt;++# see what happens if a file exists where we want a directory
&lt;br&gt;++SKIP: {
&lt;br&gt;++ &amp;nbsp; &amp;nbsp;my $entry = catdir($tmp_base, &amp;quot;file&amp;quot;);
&lt;br&gt;++ &amp;nbsp; &amp;nbsp;skip &amp;quot;Cannot create $entry&amp;quot;, 4 unless open OUT, &amp;quot;&amp;gt; $entry&amp;quot;;
&lt;br&gt;++ &amp;nbsp; &amp;nbsp;print OUT &amp;quot;test file, safe to delete\n&amp;quot;, scalar(localtime), &amp;quot;\n&amp;quot;;
&lt;br&gt;++ &amp;nbsp; &amp;nbsp;close OUT;
&lt;br&gt;++ &amp;nbsp; &amp;nbsp;ok(-e $entry, &amp;quot;file exists in place of directory&amp;quot;);
&lt;br&gt;++
&lt;br&gt;++ &amp;nbsp; &amp;nbsp;mkpath( $entry, {error =&amp;gt; \$error} );
&lt;br&gt;++ &amp;nbsp; &amp;nbsp;is( scalar(@$error), 1, &amp;quot;caught error condition&amp;quot; );
&lt;br&gt;++ &amp;nbsp; &amp;nbsp;($file, $message) = each %{$error-&amp;gt;[0]};
&lt;br&gt;++ &amp;nbsp; &amp;nbsp;is( $entry, $file, &amp;quot;and the message is: $message&amp;quot;);
&lt;br&gt;++
&lt;br&gt;++ &amp;nbsp; &amp;nbsp;eval {@created = mkpath($entry, 0, 0700)};
&lt;br&gt;++ &amp;nbsp; &amp;nbsp;$error = $@;
&lt;br&gt;++ &amp;nbsp; &amp;nbsp;chomp $error; # just to remove silly # in TAP output
&lt;br&gt;++ &amp;nbsp; &amp;nbsp;cmp_ok( $error, 'ne', &amp;quot;&amp;quot;, &amp;quot;no directory created (old-style) err=$error&amp;quot; )
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;or diag(@created);
&lt;br&gt;++}
&lt;br&gt;++
&lt;br&gt;++my $extra = &amp;nbsp;catdir(curdir(), qw(EXTRA 1 a));
&lt;br&gt;++
&lt;br&gt;++SKIP: {
&lt;br&gt;++ &amp;nbsp; &amp;nbsp;skip &amp;quot;extra scenarios not set up, see eg/setup-extra-tests&amp;quot;, 14
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;unless -e $extra;
&lt;br&gt;++
&lt;br&gt;++ &amp;nbsp; &amp;nbsp;my ($list, $err);
&lt;br&gt;++ &amp;nbsp; &amp;nbsp;$dir = catdir( 'EXTRA', '1' );
&lt;br&gt;++ &amp;nbsp; &amp;nbsp;rmtree( $dir, {result =&amp;gt; \$list, error =&amp;gt; \$err} );
&lt;br&gt;++ &amp;nbsp; &amp;nbsp;is(scalar(@$list), 2, &amp;quot;extra dir $dir removed&amp;quot;);
&lt;br&gt;++ &amp;nbsp; &amp;nbsp;is(scalar(@$err), 1, &amp;quot;one error encountered&amp;quot;);
&lt;br&gt;++
&lt;br&gt;++ &amp;nbsp; &amp;nbsp;$dir = catdir( 'EXTRA', '3', 'N' );
&lt;br&gt;++ &amp;nbsp; &amp;nbsp;rmtree( $dir, {result =&amp;gt; \$list, error =&amp;gt; \$err} );
&lt;br&gt;++ &amp;nbsp; &amp;nbsp;is( @$list, 1, q{remove a symlinked dir} );
&lt;br&gt;++ &amp;nbsp; &amp;nbsp;is( @$err, &amp;nbsp;0, q{with no errors} );
&lt;br&gt;++
&lt;br&gt;++ &amp;nbsp; &amp;nbsp;$dir = catdir('EXTRA', '3', 'S');
&lt;br&gt;++ &amp;nbsp; &amp;nbsp;rmtree($dir, {error =&amp;gt; \$error});
&lt;br&gt;++ &amp;nbsp; &amp;nbsp;is( scalar(@$error), 1, 'one error for an unreadable dir' );
&lt;br&gt;++ &amp;nbsp; &amp;nbsp;eval { ($file, $message) = each %{$error-&amp;gt;[0]}};
&lt;br&gt;++ &amp;nbsp; &amp;nbsp;is( $file, $dir, 'unreadable dir reported in error' )
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;or diag($message);
&lt;br&gt;++
&lt;br&gt;++ &amp;nbsp; &amp;nbsp;$dir = catdir('EXTRA', '3', 'T');
&lt;br&gt;++ &amp;nbsp; &amp;nbsp;rmtree($dir, {error =&amp;gt; \$error});
&lt;br&gt;++ &amp;nbsp; &amp;nbsp;is( scalar(@$error), 1, 'one error for an unreadable dir T' );
&lt;br&gt;++ &amp;nbsp; &amp;nbsp;eval { ($file, $message) = each %{$error-&amp;gt;[0]}};
&lt;br&gt;++ &amp;nbsp; &amp;nbsp;is( $file, $dir, 'unreadable dir reported in error T' );
&lt;br&gt;++
&lt;br&gt;++ &amp;nbsp; &amp;nbsp;$dir = catdir( 'EXTRA', '4' );
&lt;br&gt;++ &amp;nbsp; &amp;nbsp;rmtree($dir, &amp;nbsp;{result =&amp;gt; \$list, error =&amp;gt; \$err} );
&lt;br&gt;++ &amp;nbsp; &amp;nbsp;is( scalar(@$list), 0, q{don't follow a symlinked dir} );
&lt;br&gt;++ &amp;nbsp; &amp;nbsp;is( scalar(@$err), &amp;nbsp;2, q{two errors when removing a symlink in r/o dir} );
&lt;br&gt;++ &amp;nbsp; &amp;nbsp;eval { ($file, $message) = each %{$err-&amp;gt;[0]} };
&lt;br&gt;++ &amp;nbsp; &amp;nbsp;is( $file, $dir, 'symlink reported in error' );
&lt;br&gt;++
&lt;br&gt;++ &amp;nbsp; &amp;nbsp;$dir &amp;nbsp;= catdir('EXTRA', '3', 'U');
&lt;br&gt;++ &amp;nbsp; &amp;nbsp;$dir2 = catdir('EXTRA', '3', 'V');
&lt;br&gt;++ &amp;nbsp; &amp;nbsp;rmtree($dir, $dir2, {verbose =&amp;gt; 0, error =&amp;gt; \$err, result =&amp;gt; \$list});
&lt;br&gt;++ &amp;nbsp; &amp;nbsp;is( scalar(@$list), &amp;nbsp;1, q{deleted 1 out of 2 directories} );
&lt;br&gt;++ &amp;nbsp; &amp;nbsp;is( scalar(@$error), 1, q{left behind 1 out of 2 directories} );
&lt;br&gt;++ &amp;nbsp; &amp;nbsp;eval { ($file, $message) = each %{$err-&amp;gt;[0]} };
&lt;br&gt;++ &amp;nbsp; &amp;nbsp;is( $file, $dir, 'first dir reported in error' );
&lt;br&gt;++}
&lt;br&gt;++
&lt;br&gt;++{
&lt;br&gt;++ &amp;nbsp; &amp;nbsp;$dir = catdir($tmp_base, 'ZZ');
&lt;br&gt;++ &amp;nbsp; &amp;nbsp;@created = mkpath($dir);
&lt;br&gt;++ &amp;nbsp; &amp;nbsp;is(scalar(@created), 1, &amp;quot;create a ZZ directory&amp;quot;);
&lt;br&gt;++
&lt;br&gt;++ &amp;nbsp; &amp;nbsp;local @ARGV = ($dir);
&lt;br&gt;++ &amp;nbsp; &amp;nbsp;rmtree( [grep -e $_, @ARGV], 0, 0 );
&lt;br&gt;++ &amp;nbsp; &amp;nbsp;ok(!-e $dir, &amp;quot;blow it away via \@ARGV&amp;quot;);
&lt;br&gt;++}
&lt;br&gt;++
&lt;br&gt;++SKIP: {
&lt;br&gt;++ &amp;nbsp; &amp;nbsp;skip 'Test::Output not available', 14
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;unless $has_Test_Output;
&lt;br&gt;++
&lt;br&gt;++ &amp;nbsp; &amp;nbsp;SKIP: {
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;$dir = catdir('EXTRA', '3');
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;skip &amp;quot;extra scenarios not set up, see eg/setup-extra-tests&amp;quot;, 3
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;unless -e $dir;
&lt;br&gt;++
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;$dir = catdir('EXTRA', '3', 'U');
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;stderr_like( 
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;sub {rmtree($dir, {verbose =&amp;gt; 0})},
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;qr{\Acannot make child directory read-write-exec for [^:]+: .* at \S+ line \d+},
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;q(rmtree can't chdir into root dir)
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;);
&lt;br&gt;++
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;$dir = catdir('EXTRA', '3');
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;stderr_like( 
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;sub {rmtree($dir, {})},
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;qr{\Acannot make child directory read-write-exec for [^:]+: .* at (\S+) line (\d+)
&lt;br&gt;++cannot make child directory read-write-exec for [^:]+: .* at \1 line \2
&lt;br&gt;++cannot make child directory read-write-exec for [^:]+: .* at \1 line \2
&lt;br&gt;++cannot remove directory for [^:]+: .* at \1 line \2},
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;'rmtree with file owned by root'
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;);
&lt;br&gt;++
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;stderr_like( 
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;sub {rmtree('EXTRA', {})},
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;qr{\Acannot remove directory for [^:]+: .* at (\S+) line (\d+)
&lt;br&gt;++cannot remove directory for [^:]+: .* at \1 line \2
&lt;br&gt;++cannot make child directory read-write-exec for [^:]+: .* at \1 line \2
&lt;br&gt;++cannot make child directory read-write-exec for [^:]+: .* at \1 line \2
&lt;br&gt;++cannot make child directory read-write-exec for [^:]+: .* at \1 line \2
&lt;br&gt;++cannot remove directory for [^:]+: .* at \1 line \2
&lt;br&gt;++cannot unlink file for [^:]+: .* at \1 line \2
&lt;br&gt;++cannot restore permissions to \d+ for [^:]+: .* at \1 line \2
&lt;br&gt;++cannot make child directory read-write-exec for [^:]+: .* at \1 line \2
&lt;br&gt;++cannot remove directory for [^:]+: .* at \1 line \2
&lt;br&gt;++cannot restore permissions to \d+ for [^:]+: .* at \1 line \2},
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;'rmtree with insufficient privileges'
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;);
&lt;br&gt;++ &amp;nbsp; &amp;nbsp;}
&lt;br&gt;++
&lt;br&gt;++ &amp;nbsp; &amp;nbsp;my $base = catdir($tmp_base,'output');
&lt;br&gt;++ &amp;nbsp; &amp;nbsp;$dir &amp;nbsp;= catdir($base,'A');
&lt;br&gt;++ &amp;nbsp; &amp;nbsp;$dir2 = catdir($base,'B');
&lt;br&gt;++
&lt;br&gt;++ &amp;nbsp; &amp;nbsp;stderr_like(
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;sub { rmtree( undef, 1 ) },
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;qr/\ANo root path\(s\) specified\b/,
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;quot;rmtree of nothing carps sensibly&amp;quot;
&lt;br&gt;++ &amp;nbsp; &amp;nbsp;);
&lt;br&gt;++
&lt;br&gt;++ &amp;nbsp; &amp;nbsp;stderr_like(
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;sub { rmtree( '', 1 ) },
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;qr/\ANo root path\(s\) specified\b/,
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;quot;rmtree of empty dir carps sensibly&amp;quot;
&lt;br&gt;++ &amp;nbsp; &amp;nbsp;);
&lt;br&gt;++
&lt;br&gt;++ &amp;nbsp; &amp;nbsp;stderr_is( sub { mkpath() }, '', &amp;quot;mkpath no args does not carp&amp;quot; );
&lt;br&gt;++ &amp;nbsp; &amp;nbsp;stderr_is( sub { rmtree() }, '', &amp;quot;rmtree no args does not carp&amp;quot; );
&lt;br&gt;++
&lt;br&gt;++ &amp;nbsp; &amp;nbsp;stdout_is(
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;sub {@created = mkpath($dir, 1)},
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;quot;mkdir $base\nmkdir $dir\n&amp;quot;,
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;'mkpath verbose (old style 1)'
&lt;br&gt;++ &amp;nbsp; &amp;nbsp;);
&lt;br&gt;++
&lt;br&gt;++ &amp;nbsp; &amp;nbsp;stdout_is(
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;sub {@created = mkpath([$dir2], 1)},
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;quot;mkdir $dir2\n&amp;quot;,
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;'mkpath verbose (old style 2)'
&lt;br&gt;++ &amp;nbsp; &amp;nbsp;);
&lt;br&gt;++
&lt;br&gt;++ &amp;nbsp; &amp;nbsp;stdout_is(
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;sub {$count = rmtree([$dir, $dir2], 1, 1)},
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;quot;rmdir $dir\nrmdir $dir2\n&amp;quot;,
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;'rmtree verbose (old style)'
&lt;br&gt;++ &amp;nbsp; &amp;nbsp;);
&lt;br&gt;++
&lt;br&gt;++ &amp;nbsp; &amp;nbsp;stdout_is(
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;sub {@created = mkpath($dir, {verbose =&amp;gt; 1, mask =&amp;gt; 0750})},
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;quot;mkdir $dir\n&amp;quot;,
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;'mkpath verbose (new style 1)'
&lt;br&gt;++ &amp;nbsp; &amp;nbsp;);
&lt;br&gt;++
&lt;br&gt;++ &amp;nbsp; &amp;nbsp;stdout_is(
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;sub {@created = mkpath($dir2, 1, 0771)},
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;quot;mkdir $dir2\n&amp;quot;,
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;'mkpath verbose (new style 2)'
&lt;br&gt;++ &amp;nbsp; &amp;nbsp;);
&lt;br&gt;++
&lt;br&gt;++ &amp;nbsp; &amp;nbsp;SKIP: {
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;$file = catdir($dir2, &amp;quot;file&amp;quot;);
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;skip &amp;quot;Cannot create $file&amp;quot;, 2 unless open OUT, &amp;quot;&amp;gt; $file&amp;quot;;
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;print OUT &amp;quot;test file, safe to delete\n&amp;quot;, scalar(localtime), &amp;quot;\n&amp;quot;;
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;close OUT;
&lt;br&gt;++
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;ok(-e $file, &amp;quot;file created in directory&amp;quot;);
&lt;br&gt;++
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;stdout_is(
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;sub {$count = rmtree($dir, $dir2, {verbose =&amp;gt; 1, safe =&amp;gt; 1})},
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;quot;rmdir $dir\nunlink $file\nrmdir $dir2\n&amp;quot;,
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;'rmtree safe verbose (new style)'
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;);
&lt;br&gt;++ &amp;nbsp; &amp;nbsp;}
&lt;br&gt;++}
&lt;br&gt;++
&lt;br&gt;++SKIP: {
&lt;br&gt;++ &amp;nbsp; &amp;nbsp;skip &amp;quot;extra scenarios not set up, see eg/setup-extra-tests&amp;quot;, 11
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;unless -d catdir(qw(EXTRA 1));
&lt;br&gt;++
&lt;br&gt;++ &amp;nbsp; &amp;nbsp;rmtree 'EXTRA', {safe =&amp;gt; 0, error =&amp;gt; \$error};
&lt;br&gt;++ &amp;nbsp; &amp;nbsp;is( scalar(@$error), 11, 'seven deadly sins' ); # well there used to be 7
&lt;br&gt;++
&lt;br&gt;++ &amp;nbsp; &amp;nbsp;rmtree 'EXTRA', {safe =&amp;gt; 1, error =&amp;gt; \$error};
&lt;br&gt;++ &amp;nbsp; &amp;nbsp;is( scalar(@$error), 9, 'safe is better' );
&lt;br&gt;++ &amp;nbsp; &amp;nbsp;for (@$error) {
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;($file, $message) = each %$_;
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if ($file =~ &amp;nbsp;/[123]\z/) {
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;is(index($message, 'cannot remove directory: '), 0, &amp;quot;failed to remove $file with rmdir&amp;quot;)
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;or diag($message);
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;else {
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;like($message, qr(\Acannot (?:restore permissions to \d+|chdir to child|unlink file): ), &amp;quot;failed to remove $file with unlink&amp;quot;)
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;or diag($message)
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;++ &amp;nbsp; &amp;nbsp;}
&lt;br&gt;++}
&lt;br&gt;++
&lt;br&gt;++rmtree($tmp_base, {result =&amp;gt; \$list} );
&lt;br&gt;++is(ref($list), 'ARRAY', &amp;quot;received a final list of results&amp;quot;);
&lt;br&gt;++ok( !(-d $tmp_base), &amp;quot;test base directory gone&amp;quot; );
&lt;br&gt;-- 
&lt;br&gt;1.6.0.4
&lt;br&gt;--- perl5.8-fix-CVE-2005-0448-and-related-ones.diff ends here ---
&lt;br&gt;I had tested it with the above scripts and they are not giving me
&lt;br&gt;either setuid binary or removal of the file.
&lt;br&gt;&lt;br&gt;The following VuXML entry should be evaluated and added:
&lt;br&gt;--- vuln.xml begins here ---
&lt;br&gt;&amp;nbsp; &amp;lt;vuln vid=&amp;quot;4f692cb2-bf2e-11dd-a708-001fc66e7203&amp;quot;&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;lt;topic&amp;gt;perl5.8 -- multiple vulnerabilities in File::Path rmtree function&amp;lt;/topic&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;lt;affects&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;package&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;name&amp;gt;perl&amp;lt;/name&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;range&amp;gt;&amp;lt;ge&amp;gt;5.8.0&amp;lt;/ge&amp;gt;&amp;lt;lt&amp;gt;5.8.8_2&amp;lt;/lt&amp;gt;&amp;lt;/range&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/package&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/affects&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;lt;description&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;body xmlns=&amp;quot;&lt;a href=&quot;http://www.w3.org/1999/xhtml&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.w3.org/1999/xhtml&lt;/a&gt;&amp;quot;&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;p&amp;gt;Niko Tyni from Debian reports:&amp;lt;/p&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;blockquote
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; cite=&amp;quot;&lt;a href=&quot;http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=286905#85&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=286905#85&lt;/a&gt;&amp;quot;&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;p&amp;gt;CVE-2005-0448 (File::Path::rmtree races) has resurfaced and
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; is present in all of etch, lenny, and sid.&amp;lt;/p&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;p&amp;gt;To be precise, CVE-2005-0448 was about two bugs (#286922
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; and #286905). &amp;nbsp;Both of those apply to the etch package
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; (perl-5.8.8), while only #286905 applies to the lenny/sid
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; package (perl-5.10.0).&amp;lt;/p&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/blockquote&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/body&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/description&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;lt;references&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;cvename&amp;gt;CVE-2005-0448&amp;lt;/cvename&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;mlist&amp;gt;&lt;a href=&quot;http://www.openwall.com/lists/oss-security/2008/11/28/1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.openwall.com/lists/oss-security/2008/11/28/1&lt;/a&gt;&amp;lt;/mlist&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;mlist&amp;gt;&lt;a href=&quot;http://www.gossamer-threads.com/lists/perl/porters/233699#233699&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.gossamer-threads.com/lists/perl/porters/233699#233699&lt;/a&gt;&amp;lt;/mlist&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;url&amp;gt;&lt;a href=&quot;http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=286905&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=286905&lt;/a&gt;&amp;lt;/url&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;url&amp;gt;&lt;a href=&quot;http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=286922&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=286922&lt;/a&gt;&amp;lt;/url&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/references&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;lt;dates&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;discovery&amp;gt;27-11-2008&amp;lt;/discovery&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;entry&amp;gt;TODAY&amp;lt;/entry&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/dates&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;lt;/vuln&amp;gt;
&lt;br&gt;--- vuln.xml ends here ---
&lt;br&gt;I had traced the vulnerability at least to the 5.8.0. &amp;nbsp;5.8.4 (that was
&lt;br&gt;said to be the fixed version) has all of these, because of missing 'if
&lt;br&gt;$force_writeable' for the second chmod call (setuid case) and the checks
&lt;br&gt;for the directory substituted by the symlink are missing too (presumably
&lt;br&gt;some inode and mount device comparisons should be done).
&lt;br&gt;&lt;br&gt;NB: all this stuff is already public, so I am not feeling myself guilty
&lt;br&gt;to report this to the public PR database ;))
&lt;br&gt;_______________________________________________
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=20764358&amp;i=5&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;freebsd-vuxml@...&lt;/a&gt; mailing list
&lt;br&gt;&lt;a href=&quot;http://lists.freebsd.org/mailman/listinfo/freebsd-vuxml&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://lists.freebsd.org/mailman/listinfo/freebsd-vuxml&lt;/a&gt;&lt;br&gt;To unsubscribe, send any mail to &amp;quot;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=20764358&amp;i=6&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;freebsd-vuxml-unsubscribe@...&lt;/a&gt;&amp;quot;
&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/-vuxml--lang-perl5.8%3A-document-and-fix-CVE-2005-0448-tp20764358p20764358.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-20759493</id>
	<title>[vuxml] devel/p5-File-Path: completely fix CVE-2005-0448</title>
	<published>2008-11-30T07:03:07Z</published>
	<updated>2008-11-30T07:03:07Z</updated>
	<author>
		<name>Eygene Ryabinkin-3</name>
	</author>
	<content type="html">&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt;Submitter-Id:	current-users
&lt;br&gt;&amp;gt;Originator:	Eygene Ryabinkin
&lt;br&gt;&amp;gt;Organization:	Code Labs
&lt;br&gt;&amp;gt;Confidential:	no 
&lt;br&gt;&amp;gt;Synopsis:	[vuxml] [patch] devel/p5-File-Path: completely fix CVE-2005-0448
&lt;br&gt;&amp;gt;Severity:	critical
&lt;br&gt;&amp;gt;Priority:	high
&lt;br&gt;&amp;gt;Category:	ports
&lt;br&gt;&amp;gt;Class:		sw-bug
&lt;br&gt;&amp;gt;Release:	FreeBSD 7.1-PRERELEASE amd64
&lt;br&gt;&amp;gt;Environment:
&lt;/div&gt;&lt;br&gt;System: FreeBSD 7.1-PRERELEASE amd64
&lt;br&gt;&lt;br&gt;&amp;gt;Description:
&lt;br&gt;&lt;br&gt;It was discovered that Perl's File::Path.pm is still vulnerable to
&lt;br&gt;CVE-2005-0448:
&lt;br&gt;&amp;nbsp; &lt;a href=&quot;http://www.openwall.com/lists/oss-security/2008/11/28/1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.openwall.com/lists/oss-security/2008/11/28/1&lt;/a&gt;&lt;br&gt;&lt;br&gt;&amp;gt;How-To-Repeat:
&lt;br&gt;&lt;br&gt;Read the reference above and
&lt;br&gt;&amp;nbsp; &lt;a href=&quot;http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=286905&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=286905&lt;/a&gt;&lt;br&gt;&lt;br&gt;&amp;gt;Fix:
&lt;br&gt;&lt;br&gt;The following patch updates the port with the proper fix.
&lt;br&gt;&lt;br&gt;--- p5-File-Path-completely-fix-CVE-2008-0448.diff begins here ---
&lt;br&gt;&amp;gt;From 6a3342fd4e12d3b3de24d6b0bdaa98ed9aac08e3 Mon Sep 17 00:00:00 2001
&lt;br&gt;From: Eygene Ryabinkin &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=20759493&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;rea-fbsd@...&lt;/a&gt;&amp;gt;
&lt;br&gt;Date: Sun, 30 Nov 2008 16:04:26 +0300
&lt;br&gt;&lt;br&gt;Original issue is documented at
&lt;br&gt;&amp;nbsp; &lt;a href=&quot;http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=286905&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=286905&lt;/a&gt;&lt;br&gt;&lt;br&gt;Current issue (incomplete fix) is documented at
&lt;br&gt;&amp;nbsp; &lt;a href=&quot;http://bugs.debian.org/cgi-bin/bugreport.cgi?msg=85;filename=sid_fix_file_path;att=2;bug=286905&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://bugs.debian.org/cgi-bin/bugreport.cgi?msg=85;filename=sid_fix_file_path;att=2;bug=286905&lt;/a&gt;&lt;br&gt;&lt;br&gt;Signed-off-by: Eygene Ryabinkin &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=20759493&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;rea-fbsd@...&lt;/a&gt;&amp;gt;
&lt;br&gt;---
&lt;br&gt;&amp;nbsp;devel/p5-File-Path/Makefile &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;| &amp;nbsp; &amp;nbsp;1 +
&lt;br&gt;&amp;nbsp;.../files/patch-incomplete-fix-for-CVE-2008-0448 &amp;nbsp; | &amp;nbsp; 13 +++++++++++++
&lt;br&gt;&amp;nbsp;2 files changed, 14 insertions(+), 0 deletions(-)
&lt;br&gt;&amp;nbsp;create mode 100644 devel/p5-File-Path/files/patch-incomplete-fix-for-CVE-2008-0448
&lt;br&gt;&lt;br&gt;diff --git a/devel/p5-File-Path/Makefile b/devel/p5-File-Path/Makefile
&lt;br&gt;index 769198a..131df52 100644
&lt;br&gt;--- a/devel/p5-File-Path/Makefile
&lt;br&gt;+++ b/devel/p5-File-Path/Makefile
&lt;br&gt;@@ -7,6 +7,7 @@
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;PORTNAME=	File-Path
&lt;br&gt;&amp;nbsp;PORTVERSION=	2.07
&lt;br&gt;+PORTREVISION=	1
&lt;br&gt;&amp;nbsp;CATEGORIES=	devel perl5
&lt;br&gt;&amp;nbsp;MASTER_SITES=	CPAN
&lt;br&gt;&amp;nbsp;PKGNAMEPREFIX=	p5-
&lt;br&gt;diff --git a/devel/p5-File-Path/files/patch-incomplete-fix-for-CVE-2008-0448 b/devel/p5-File-Path/files/patch-incomplete-fix-for-CVE-2008-0448
&lt;br&gt;new file mode 100644
&lt;br&gt;index 0000000..2cdcf25
&lt;br&gt;--- /dev/null
&lt;br&gt;+++ b/devel/p5-File-Path/files/patch-incomplete-fix-for-CVE-2008-0448
&lt;br&gt;@@ -0,0 +1,13 @@
&lt;br&gt;+Adopted from (took second hunk): &lt;a href=&quot;http://bugs.debian.org/cgi-bin/bugreport.cgi?msg=85;filename=sid_fix_file_path;att=2;bug=286905&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://bugs.debian.org/cgi-bin/bugreport.cgi?msg=85;filename=sid_fix_file_path;att=2;bug=286905&lt;/a&gt;&lt;br&gt;+
&lt;br&gt;+--- Path.pm.orig	2008-11-30 15:00:37.000000000 +0300
&lt;br&gt;++++ Path.pm	2008-11-30 15:02:17.000000000 +0300
&lt;br&gt;+@@ -333,7 +333,7 @@
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; else {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; _error($arg, &amp;quot;cannot remove directory&amp;quot;, $canon);
&lt;br&gt;+- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (!chmod($perm, ($Is_VMS ? VMS::Filespec::fileify($root) : $root))
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if ($Force_Writeable &amp;&amp; !chmod($perm, ($Is_VMS ? VMS::Filespec::fileify($root) : $root))
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; _error($arg, sprintf(&amp;quot;cannot restore permissions to 0%o&amp;quot;,$perm), $canon);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;-- 
&lt;br&gt;1.6.0.4
&lt;br&gt;&lt;br&gt;--- p5-File-Path-completely-fix-CVE-2008-0448.diff ends here ---
&lt;br&gt;&lt;br&gt;The following VuXML entry should be evaluated and added:
&lt;br&gt;--- vuln.xml begins here ---
&lt;br&gt;&amp;nbsp; &amp;lt;vuln vid=&amp;quot;13b0c8c8-bee0-11dd-a708-001fc66e7203&amp;quot;&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;lt;topic&amp;gt;p5-File-Path -- rmtree allows creation of setuid files&amp;lt;/topic&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;lt;affects&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;package&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;name&amp;gt;p5-File-Path&amp;lt;/name&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;range&amp;gt;&amp;lt;lt&amp;gt;2.07_1&amp;lt;/lt&amp;gt;&amp;lt;/range&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/package&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/affects&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;lt;description&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;body xmlns=&amp;quot;&lt;a href=&quot;http://www.w3.org/1999/xhtml&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.w3.org/1999/xhtml&lt;/a&gt;&amp;quot;&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;p&amp;gt;Jan Lieskovsky reports:&amp;lt;/p&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;blockquote
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; cite=&amp;quot;&lt;a href=&quot;http://www.openwall.com/lists/oss-security/2008/11/28/1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.openwall.com/lists/oss-security/2008/11/28/1&lt;/a&gt;&amp;quot;&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;p&amp;gt;perl-File-Path rmtree race condition (CVE-2005-0448 was
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; assigned to address this)&amp;lt;/p&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;p&amp;gt;This vulnerability was fixed in 5.8.4-7 but re-introduced
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; in 5.8.8-1. &amp;nbsp;It's also present in File::Path 2.xx, up to and
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; including 2.07 which has only a partial fix.&amp;lt;/p&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/blockquote&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/body&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/description&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;lt;references&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;cvename&amp;gt;CVE-2005-0448&amp;lt;/cvename&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;mlist&amp;gt;&lt;a href=&quot;http://www.openwall.com/lists/oss-security/2008/11/28/1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.openwall.com/lists/oss-security/2008/11/28/1&lt;/a&gt;&amp;lt;/mlist&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;mlist&amp;gt;&lt;a href=&quot;http://www.gossamer-threads.com/lists/perl/porters/233699#233699&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.gossamer-threads.com/lists/perl/porters/233699#233699&lt;/a&gt;&amp;lt;/mlist&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;url&amp;gt;&lt;a href=&quot;http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=286905&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=286905&lt;/a&gt;&amp;lt;/url&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/references&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;lt;dates&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;discovery&amp;gt;28-11-2008&amp;lt;/discovery&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;entry&amp;gt;TODAY&amp;lt;/entry&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/dates&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;lt;/vuln&amp;gt;
&lt;br&gt;--- vuln.xml ends here ---
&lt;br&gt;_______________________________________________
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=20759493&amp;i=2&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;freebsd-vuxml@...&lt;/a&gt; mailing list
&lt;br&gt;&lt;a href=&quot;http://lists.freebsd.org/mailman/listinfo/freebsd-vuxml&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://lists.freebsd.org/mailman/listinfo/freebsd-vuxml&lt;/a&gt;&lt;br&gt;To unsubscribe, send any mail to &amp;quot;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=20759493&amp;i=3&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;freebsd-vuxml-unsubscribe@...&lt;/a&gt;&amp;quot;
&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/-vuxml--devel-p5-File-Path%3A-completely-fix-CVE-2005-0448-tp20759493p20759493.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-20753941</id>
	<title>[vuxml] multimedia/vlc-devel: document CVE-2008-4654 and CVE-2008-4686</title>
	<published>2008-11-29T13:12:44Z</published>
	<updated>2008-11-29T13:12:44Z</updated>
	<author>
		<name>Eygene Ryabinkin-3</name>
	</author>
	<content type="html">&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt;Submitter-Id:	current-users
&lt;br&gt;&amp;gt;Originator:	Eygene Ryabinkin
&lt;br&gt;&amp;gt;Organization:	Code Labs
&lt;br&gt;&amp;gt;Confidential:	no 
&lt;br&gt;&amp;gt;Synopsis:	[vuxml] multimedia/vlc-devel: document CVE-2008-4654 and CVE-2008-4686
&lt;br&gt;&amp;gt;Severity:	non-critical
&lt;br&gt;&amp;gt;Priority:	medium
&lt;br&gt;&amp;gt;Category:	ports
&lt;br&gt;&amp;gt;Class:		sw-bug
&lt;br&gt;&amp;gt;Release:	FreeBSD 7.1-PRERELEASE amd64
&lt;br&gt;&amp;gt;Environment:
&lt;/div&gt;&lt;br&gt;System: FreeBSD 7.1-PRERELEASE amd64
&lt;br&gt;&lt;br&gt;&amp;gt;Description:
&lt;br&gt;&lt;br&gt;Multiple overflows were discovered in the TiVo demuxer within the
&lt;br&gt;VLC player.
&lt;br&gt;&lt;br&gt;&amp;gt;How-To-Repeat:
&lt;br&gt;&lt;br&gt;Look at &lt;a href=&quot;http://www.openwall.com/lists/oss-security/2008/10/22/2&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.openwall.com/lists/oss-security/2008/10/22/2&lt;/a&gt;&lt;br&gt;&lt;br&gt;&amp;gt;Fix:
&lt;br&gt;&lt;br&gt;The following VuXML entry should be evaluated and added:
&lt;br&gt;--- vuln.xml begins here ---
&lt;br&gt;&amp;nbsp; &amp;lt;vuln vid=&amp;quot;&amp;quot;&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;lt;topic&amp;gt;vlc-devel -- multiple overflows in the TiVo demux plugin&amp;lt;/topic&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;lt;affects&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;package&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;name&amp;gt;vlc-devel&amp;lt;/name&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;range&amp;gt;&amp;lt;ge&amp;gt;0.9.0.20080223&amp;lt;/ge&amp;gt;&amp;lt;lt&amp;gt;0.9.5&amp;lt;/lt&amp;gt;&amp;lt;/range&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/package&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/affects&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;lt;description&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;body xmlns=&amp;quot;&lt;a href=&quot;http://www.w3.org/1999/xhtml&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.w3.org/1999/xhtml&lt;/a&gt;&amp;quot;&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;p&amp;gt;Tobias Klein from TrapKit notifies:&amp;lt;/p&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;blockquote cite=&amp;quot;&lt;a href=&quot;http://www.trapkit.de/advisories/TKADV2008-010.txt&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.trapkit.de/advisories/TKADV2008-010.txt&lt;/a&gt;&amp;quot;&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;p&amp;gt;The VLC media player contains a stack overflow
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; vulnerability while parsing malformed TiVo ty media files.
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; The vulnerability can be trivially exploited by a (remote)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; attacker to execute arbitrary code in the context of VLC
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; media player.&amp;lt;/p&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/blockquote&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;p&amp;gt;Entry for CVE-2008-4686 says:&amp;lt;/p&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;blockquote cite=&amp;quot;&lt;a href=&quot;http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2008-4686&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2008-4686&lt;/a&gt;&amp;quot;&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;p&amp;gt;Multiple integer overflows in ty.c in the TY demux
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; plugin (aka the TiVo demuxer) in VideoLAN VLC media player,
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; probably 0.9.4, allow remote attackers to have an unknown
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; impact via a crafted .ty file, a different vulnerability
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; than CVE-2008-4654.&amp;lt;/p&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/blockquote&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/body&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/description&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;lt;references&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;url&amp;gt;&lt;a href=&quot;http://www.trapkit.de/advisories/TKADV2008-010.txt&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.trapkit.de/advisories/TKADV2008-010.txt&lt;/a&gt;&amp;lt;/url&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;cvename&amp;gt;CVE-2008-4654&amp;lt;/cvename&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;bid&amp;gt;31813&amp;lt;/bid&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;cvename&amp;gt;CVE-2008-4686&amp;lt;/cvename&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/references&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;lt;dates&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;discovery&amp;gt;2008-10-18&amp;lt;/discovery&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;entry&amp;gt;TODAY&amp;lt;/entry&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/dates&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;lt;/vuln&amp;gt;
&lt;br&gt;--- vuln.xml ends here ---
&lt;br&gt;&lt;br&gt;I had traced the vulnerable code down to the 0.9.0.20080223: older
&lt;br&gt;snapshots have no such code as referenced in the commits
&lt;br&gt;&amp;nbsp; &lt;a href=&quot;http://git.videolan.org/?p=vlc.git;a=blobdiff;f=modules/demux/ty.c;h=f7d42bc4f8edc9890fec96a4933100f114f1258d;hp=231fddabf8a53136040e7e3f5d0202d0539c8a93;hb=fde9e1cc1fe1ec9635169fa071e42b3aa6436033;hpb=b63538354a6a49ae5a878edd37221480cb7850f5&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://git.videolan.org/?p=vlc.git;a=blobdiff;f=modules/demux/ty.c;h=f7d42bc4f8edc9890fec96a4933100f114f1258d;hp=231fddabf8a53136040e7e3f5d0202d0539c8a93;hb=fde9e1cc1fe1ec9635169fa071e42b3aa6436033;hpb=b63538354a6a49ae5a878edd37221480cb7850f5&lt;/a&gt;&lt;br&gt;&amp;nbsp; &lt;a href=&quot;http://git.videolan.org/?p=vlc.git;a=commitdiff;h=d859e6b9537af2d7326276f70de25a840f554dc3&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://git.videolan.org/?p=vlc.git;a=commitdiff;h=d859e6b9537af2d7326276f70de25a840f554dc3&lt;/a&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=20753941&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;freebsd-vuxml@...&lt;/a&gt; mailing list
&lt;br&gt;&lt;a href=&quot;http://lists.freebsd.org/mailman/listinfo/freebsd-vuxml&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://lists.freebsd.org/mailman/listinfo/freebsd-vuxml&lt;/a&gt;&lt;br&gt;To unsubscribe, send any mail to &amp;quot;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=20753941&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;freebsd-vuxml-unsubscribe@...&lt;/a&gt;&amp;quot;
&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/-vuxml--multimedia-vlc-devel%3A-document-CVE-2008-4654-and-CVE-2008-4686-tp20753941p20753941.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-20759749</id>
	<title>[vuxml] document vulnerability in dovecot-managesieve</title>
	<published>2008-11-29T03:57:15Z</published>
	<updated>2008-11-29T03:57:15Z</updated>
	<author>
		<name>Eygene Ryabinkin-3</name>
	</author>
	<content type="html">&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt;Submitter-Id:	current-users
&lt;br&gt;&amp;gt;Originator:	Eygene Ryabinkin
&lt;br&gt;&amp;gt;Organization:	Code Labs
&lt;br&gt;&amp;gt;Confidential:	no 
&lt;br&gt;&amp;gt;Synopsis:	[vuxml] document vulnerability in dovecot-managesieve
&lt;br&gt;&amp;gt;Severity:	serious
&lt;br&gt;&amp;gt;Priority:	medium
&lt;br&gt;&amp;gt;Category:	ports
&lt;br&gt;&amp;gt;Class:		sw-bug
&lt;br&gt;&amp;gt;Release:	FreeBSD 7.0-STABLE amd64
&lt;br&gt;&amp;gt;Environment:
&lt;/div&gt;&lt;br&gt;System: FreeBSD 7.0-STABLE amd64
&lt;br&gt;&lt;br&gt;&amp;gt;Description:
&lt;br&gt;&lt;br&gt;There is a bug in the dovecot-managesieve that allows virtual users
&lt;br&gt;to get read/write access to the other's sieve files in some curcumstances:
&lt;br&gt;&amp;nbsp; &lt;a href=&quot;http://www.dovecot.org/list/dovecot/2008-November/035259.html&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.dovecot.org/list/dovecot/2008-November/035259.html&lt;/a&gt;&lt;br&gt;&lt;br&gt;&amp;gt;How-To-Repeat:
&lt;br&gt;&lt;br&gt;Look at &lt;a href=&quot;http://www.dovecot.org/list/dovecot/2008-November/035259.html&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.dovecot.org/list/dovecot/2008-November/035259.html&lt;/a&gt;&lt;br&gt;&lt;br&gt;PR ports/129028 mentions the security vulnerability (that was eliminated
&lt;br&gt;by that PR), but does not add a new VuXML entry.
&lt;br&gt;&lt;br&gt;&amp;gt;Fix:
&lt;br&gt;&lt;br&gt;The following VuXML entry should be evaluated and added:
&lt;br&gt;--- vuln.xml begins here ---
&lt;br&gt;&amp;nbsp; &amp;lt;vuln vid=&amp;quot;unknown&amp;quot;&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;lt;topic&amp;gt;dovecot-managesieve -- unallowed read/write access to the sieve scripts by virtual users&amp;lt;/topic&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;lt;affects&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;package&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;name&amp;gt;dovecot-managesieve&amp;lt;/name&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;range&amp;gt;&amp;lt;lt&amp;gt;0.10.4&amp;lt;/lt&amp;gt;&amp;lt;/range&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;range&amp;gt;&amp;lt;ge&amp;gt;0.11.0&amp;lt;/ge&amp;gt;&amp;lt;lt&amp;gt;0.11.1&amp;lt;/lt&amp;gt;&amp;lt;/range&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/package&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/affects&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;lt;description&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;body xmlns=&amp;quot;&lt;a href=&quot;http://www.w3.org/1999/xhtml&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.w3.org/1999/xhtml&lt;/a&gt;&amp;quot;&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;p&amp;gt;Stephan Bosch, maintainer of dovecot-managesieve, reports:&amp;lt;/p&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;blockquote cite=&amp;quot;&lt;a href=&quot;http://www.dovecot.org/list/dovecot/2008-November/035259.html&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.dovecot.org/list/dovecot/2008-November/035259.html&lt;/a&gt;&amp;quot;&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;p&amp;gt;&amp;hellip;clever virtual users that know the directory
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; structure of the server can read and edit script files of
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; other virtual users with the same system uid.&amp;lt;/p&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/blockquote&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/body&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/description&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;lt;references&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;mlist&amp;gt;&lt;a href=&quot;http://www.dovecot.org/list/dovecot/2008-November/035259.html&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.dovecot.org/list/dovecot/2008-November/035259.html&lt;/a&gt;&amp;lt;/mlist&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;url&amp;gt;&lt;a href=&quot;http://secunia.com/Advisories/32768/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://secunia.com/Advisories/32768/&lt;/a&gt;&amp;lt;/url&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/references&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;lt;dates&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;discovery&amp;gt;2008-11-17&amp;lt;/discovery&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;entry&amp;gt;TODAY&amp;lt;/entry&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/dates&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;lt;/vuln&amp;gt;
&lt;br&gt;--- vuln.xml ends here ---
&lt;br&gt;&lt;br&gt;I had marked port versions '&amp;gt;=0.11.0&amp;lt;0.11.1' to be affected too, because
&lt;br&gt;these upstream versions are affected. &amp;nbsp;There are no such port versions
&lt;br&gt;in the official FreeBSD ports tree.
&lt;br&gt;_______________________________________________
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=20759749&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;freebsd-vuxml@...&lt;/a&gt; mailing list
&lt;br&gt;&lt;a href=&quot;http://lists.freebsd.org/mailman/listinfo/freebsd-vuxml&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://lists.freebsd.org/mailman/listinfo/freebsd-vuxml&lt;/a&gt;&lt;br&gt;To unsubscribe, send any mail to &amp;quot;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=20759749&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;freebsd-vuxml-unsubscribe@...&lt;/a&gt;&amp;quot;
&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/-vuxml--document-vulnerability-in-dovecot-managesieve-tp20759749p20759749.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-20759492</id>
	<title>[vuxml] editors/vim: document CVE-2008-3432</title>
	<published>2008-11-29T03:27:23Z</published>
	<updated>2008-11-29T03:27:23Z</updated>
	<author>
		<name>Eygene Ryabinkin-3</name>
	</author>
	<content type="html">&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt;Submitter-Id:	current-users
&lt;br&gt;&amp;gt;Originator:	Eygene Ryabinkin
&lt;br&gt;&amp;gt;Organization:	Code Labs
&lt;br&gt;&amp;gt;Confidential:	no 
&lt;br&gt;&amp;gt;Synopsis:	[vuxml] editors/vim: document CVE-2008-3432
&lt;br&gt;&amp;gt;Severity:	non-critical
&lt;br&gt;&amp;gt;Priority:	medium
&lt;br&gt;&amp;gt;Category:	ports
&lt;br&gt;&amp;gt;Class:		sw-bug
&lt;br&gt;&amp;gt;Release:	FreeBSD 7.0-STABLE amd64
&lt;br&gt;&amp;gt;Environment:
&lt;/div&gt;&lt;br&gt;System: FreeBSD 7.0-STABLE amd64
&lt;br&gt;&lt;br&gt;&amp;gt;Description:
&lt;br&gt;&lt;br&gt;There is CVE-2008-3432 that addresses the heap-based buffer overflow in
&lt;br&gt;vim 6.2 and 6.3. &amp;nbsp;While these are rather dated, someone might still be
&lt;br&gt;using them.
&lt;br&gt;&lt;br&gt;&amp;gt;How-To-Repeat:
&lt;br&gt;&lt;br&gt;&lt;a href=&quot;http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2008-3432&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2008-3432&lt;/a&gt;&lt;br&gt;&lt;a href=&quot;http://www.openwall.com/lists/oss-security/2008/07/15/4&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.openwall.com/lists/oss-security/2008/07/15/4&lt;/a&gt;&lt;br&gt;&lt;br&gt;&amp;gt;Fix:
&lt;br&gt;&lt;br&gt;The following VuXML entry should be evaluated and added:
&lt;br&gt;--- vuln.xml begins here ---
&lt;br&gt;&amp;nbsp; &amp;lt;vuln vid=&amp;quot;&amp;quot;&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;lt;topic&amp;gt;vim -- heap-based overflow while parsing shell metacharacters&amp;lt;/topic&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;lt;affects&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;package&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;name&amp;gt;vim&amp;lt;/name&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;name&amp;gt;vim-lite&amp;lt;/name&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;name&amp;gt;vim-gtk2&amp;lt;/name&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;name&amp;gt;vim-gnome&amp;lt;/name&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;range&amp;gt;&amp;lt;ge&amp;gt;6.2.521&amp;lt;/ge&amp;gt;&amp;lt;lt&amp;gt;6.3.62&amp;lt;/lt&amp;gt;&amp;lt;/range&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/package&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/affects&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;lt;description&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;body xmlns=&amp;quot;&lt;a href=&quot;http://www.w3.org/1999/xhtml&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.w3.org/1999/xhtml&lt;/a&gt;&amp;quot;&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;p&amp;gt;Description for CVE-2008-3432 says:&amp;lt;/p&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;blockquote cite=&amp;quot;&lt;a href=&quot;http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2008-3432&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2008-3432&lt;/a&gt;&amp;quot;&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;p&amp;gt;Heap-based buffer overflow in the mch_expand_wildcards
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; function in os_unix.c in Vim 6.2 and 6.3 allows user-assisted
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; attackers to execute arbitrary code via shell metacharacters
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; in filenames, as demonstrated by the netrw.v3 test case.&amp;lt;/p&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/blockquote&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/body&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/description&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;lt;references&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;cvename&amp;gt;CVE-2008-3432&amp;lt;/cvename&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;url&amp;gt;&lt;a href=&quot;http://www.openwall.com/lists/oss-security/2008/07/15/4&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.openwall.com/lists/oss-security/2008/07/15/4&lt;/a&gt;&amp;lt;/url&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/references&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;lt;dates&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;discovery&amp;gt;2008-07-31&amp;lt;/discovery&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;entry&amp;gt;today&amp;lt;/entry&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/dates&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;lt;/vuln&amp;gt;
&lt;br&gt;--- vuln.xml ends here ---
&lt;br&gt;_______________________________________________
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=20759492&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;freebsd-vuxml@...&lt;/a&gt; mailing list
&lt;br&gt;&lt;a href=&quot;http://lists.freebsd.org/mailman/listinfo/freebsd-vuxml&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://lists.freebsd.org/mailman/listinfo/freebsd-vuxml&lt;/a&gt;&lt;br&gt;To unsubscribe, send any mail to &amp;quot;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=20759492&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;freebsd-vuxml-unsubscribe@...&lt;/a&gt;&amp;quot;
&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/-vuxml--editors-vim%3A-document-CVE-2008-3432-tp20759492p20759492.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-20725271</id>
	<title>[vuxml] eliminate false-positive for samba due to the entry in old portaudit.xml</title>
	<published>2008-11-27T12:23:46Z</published>
	<updated>2008-11-27T12:23:46Z</updated>
	<author>
		<name>Eygene Ryabinkin-3</name>
	</author>
	<content type="html">&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt;Submitter-Id:	current-users
&lt;br&gt;&amp;gt;Originator:	Eygene Ryabinkin
&lt;br&gt;&amp;gt;Organization:	Code Labs
&lt;br&gt;&amp;gt;Confidential:	no 
&lt;br&gt;&amp;gt;Synopsis:	[vuxml] eliminate false-positive for samba due to the entry in old portaudit.xml
&lt;br&gt;&amp;gt;Severity:	serious
&lt;br&gt;&amp;gt;Priority:	medium
&lt;br&gt;&amp;gt;Category:	ports
&lt;br&gt;&amp;gt;Class:		sw-bug
&lt;br&gt;&amp;gt;Release:	FreeBSD 7.1-PRERELEASE i386
&lt;br&gt;&amp;gt;Environment:
&lt;/div&gt;&lt;br&gt;System: FreeBSD 7.1-PRERELEASE i386
&lt;br&gt;&lt;br&gt;&amp;gt;Description:
&lt;br&gt;&lt;br&gt;Samba version specification that is found in the old portaudit.xml file
&lt;br&gt;inside ports-mgmt/portaudit-db/databases has improper entry that cathes
&lt;br&gt;modern Samba port:
&lt;br&gt;-----
&lt;br&gt;$ pkg_version -T samba-3.2.4 'samba&amp;gt;=3.*&amp;lt;3.0.5,1' &amp;&amp; echo Found!
&lt;br&gt;Found!
&lt;br&gt;-----
&lt;br&gt;&lt;br&gt;&amp;gt;How-To-Repeat:
&lt;br&gt;&lt;br&gt;Run the above command or do 'cd /usr/ports/net/samba32-devel;
&lt;br&gt;make check-vulnerable', it should produce something like this:
&lt;br&gt;-----
&lt;br&gt;===&amp;gt; &amp;nbsp;samba-3.2.4 has known vulnerabilities:
&lt;br&gt;=&amp;gt; Multiple Potential Buffer Overruns in Samba.
&lt;br&gt;&amp;nbsp; &amp;nbsp;Reference: &amp;lt;&lt;a href=&quot;http://www.FreeBSD.org/ports/portaudit/2de14f7a-dad9-11d8-b59a-00061bc2ad93.html&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.FreeBSD.org/ports/portaudit/2de14f7a-dad9-11d8-b59a-00061bc2ad93.html&lt;/a&gt;&amp;gt;
&lt;br&gt;=&amp;gt; Please update your ports tree and try again.
&lt;br&gt;*** Error code 1
&lt;br&gt;-----
&lt;br&gt;&lt;br&gt;&amp;gt;Fix:
&lt;br&gt;&lt;br&gt;The following patch fixes the things, at least for me:
&lt;br&gt;--- portaudit.xml-fix-old-VuXML-entries-for-samba.diff begins here ---
&lt;br&gt;&amp;gt;From 601cd8355609580f914c27e15c25bbee25219f6d Mon Sep 17 00:00:00 2001
&lt;br&gt;From: Eygene Ryabinkin &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=20725271&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;rea-fbsd@...&lt;/a&gt;&amp;gt;
&lt;br&gt;Date: Thu, 27 Nov 2008 23:04:40 +0300
&lt;br&gt;&lt;br&gt;Very old portaudit.xml in ports-mgmt/portaudit-db/database has 4 years
&lt;br&gt;old entry for samba that renders current port, net/samba32-devel to be
&lt;br&gt;marked as vulnerable. &amp;nbsp;This happens due to the bad version specification
&lt;br&gt;that spans over port epoches, thus caching samba32-devel that has no
&lt;br&gt;portepoch:
&lt;br&gt;-----
&lt;br&gt;$ pkg_version -T samba-3.2.4 'samba&amp;gt;=3.*&amp;lt;3.0.5,1' &amp;&amp; echo Found!
&lt;br&gt;Found!
&lt;br&gt;-----
&lt;br&gt;&lt;br&gt;Applied modification fixes the things,
&lt;br&gt;-----
&lt;br&gt;$ pkg_version -T samba-3.2.4 'samba&amp;gt;=3.*&amp;lt;3.0a20' &amp;&amp; echo Found!
&lt;br&gt;$ pkg_version -T samba-3.2.4 'samba&amp;gt;=3.0.0.b1,1&amp;lt;3.0.5,1' &amp;&amp; echo Found!
&lt;br&gt;-----
&lt;br&gt;and seem to catch originally intended versions properly:
&lt;br&gt;-----
&lt;br&gt;$ pkg_version -T samba-3.0a19 'samba&amp;gt;=3.*&amp;lt;3.0a20' &amp;&amp; echo Found!
&lt;br&gt;Found!
&lt;br&gt;$ pkg_version -T samba-3.0a19 'samba&amp;gt;=3.0.0.b1,1&amp;lt;3.0.5,1' &amp;&amp; echo Found!
&lt;br&gt;$ pkg_version -T samba-3.0.1,1 'samba&amp;gt;=3.0.0.b1,1&amp;lt;3.0.5,1' &amp;&amp; echo Found!
&lt;br&gt;Found!
&lt;br&gt;$ pkg_version -T samba-3.0.1,1 'samba&amp;gt;=3.*&amp;lt;3.0a20' &amp;&amp; echo Found!
&lt;br&gt;-----
&lt;br&gt;&lt;br&gt;Samba revision history was traced by using CVS logs,
&lt;br&gt;&amp;nbsp; &lt;a href=&quot;http://www.freebsd.org/cgi/cvsweb.cgi/ports/net/samba3/Makefile&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.freebsd.org/cgi/cvsweb.cgi/ports/net/samba3/Makefile&lt;/a&gt;&lt;br&gt;Particularily, portepoch was bumped at the Makefile's version 1.92:
&lt;br&gt;&amp;nbsp; &lt;a href=&quot;http://www.freebsd.org/cgi/cvsweb.cgi/ports/net/samba3/Makefile.diff?r1=1.91;r2=1.92&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.freebsd.org/cgi/cvsweb.cgi/ports/net/samba3/Makefile.diff?r1=1.91;r2=1.92&lt;/a&gt;&lt;br&gt;&lt;br&gt;Note well: the added port specification will catch version 3.0.20,
&lt;br&gt;for example,
&lt;br&gt;-----
&lt;br&gt;$ pkg_version -T samba-3.0.20 'samba&amp;gt;=3.*&amp;lt;3.0a20' &amp;&amp; echo Found!
&lt;br&gt;Found!
&lt;br&gt;-----
&lt;br&gt;but FreeBSD's 3.0.20 is be named '3.0.20,1', so we seem to be safe
&lt;br&gt;here, since this particular specification will catch only 3.0.x:
&lt;br&gt;-----
&lt;br&gt;$ pkg_version -T samba-3.1.32 'samba&amp;gt;=3.*&amp;lt;3.0a20' &amp;&amp; echo Found!
&lt;br&gt;-----
&lt;br&gt;&lt;br&gt;Signed-off-by: Eygene Ryabinkin &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=20725271&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;rea-fbsd@...&lt;/a&gt;&amp;gt;
&lt;br&gt;---
&lt;br&gt;&amp;nbsp;ports-mgmt/portaudit-db/database/portaudit.xml | &amp;nbsp; &amp;nbsp;3 ++-
&lt;br&gt;&amp;nbsp;1 files changed, 2 insertions(+), 1 deletions(-)
&lt;br&gt;&lt;br&gt;diff --git a/ports-mgmt/portaudit-db/database/portaudit.xml b/ports-mgmt/portaudit-db/database/portaudit.xml
&lt;br&gt;index 168072a..bcae088 100644
&lt;br&gt;--- a/ports-mgmt/portaudit-db/database/portaudit.xml
&lt;br&gt;+++ b/ports-mgmt/portaudit-db/database/portaudit.xml
&lt;br&gt;@@ -287,7 +287,8 @@ EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;affects&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;package&amp;gt;
&lt;br&gt;&amp;nbsp;	&amp;lt;name&amp;gt;samba&amp;lt;/name&amp;gt;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;range&amp;gt;&amp;lt;ge&amp;gt;3.*&amp;lt;/ge&amp;gt;&amp;lt;lt&amp;gt;3.0.5,1&amp;lt;/lt&amp;gt;&amp;lt;/range&amp;gt;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;range&amp;gt;&amp;lt;ge&amp;gt;3.0.0.b1,1&amp;lt;/ge&amp;gt;&amp;lt;lt&amp;gt;3.0.5,1&amp;lt;/lt&amp;gt;&amp;lt;/range&amp;gt;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;range&amp;gt;&amp;lt;ge&amp;gt;3.*&amp;lt;/ge&amp;gt;&amp;lt;le&amp;gt;3.0a20&amp;lt;/le&amp;gt;&amp;lt;/range&amp;gt;
&lt;br&gt;&amp;nbsp;	&amp;lt;range&amp;gt;&amp;lt;lt&amp;gt;2.2.10&amp;lt;/lt&amp;gt;&amp;lt;/range&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;/package&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;package&amp;gt;
&lt;br&gt;-- 
&lt;br&gt;1.6.0.4
&lt;br&gt;--- portaudit.xml-fix-old-VuXML-entries-for-samba.diff ends here ---
&lt;br&gt;_______________________________________________
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=20725271&amp;i=2&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;freebsd-vuxml@...&lt;/a&gt; mailing list
&lt;br&gt;&lt;a href=&quot;http://lists.freebsd.org/mailman/listinfo/freebsd-vuxml&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://lists.freebsd.org/mailman/listinfo/freebsd-vuxml&lt;/a&gt;&lt;br&gt;To unsubscribe, send any mail to &amp;quot;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=20725271&amp;i=3&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;freebsd-vuxml-unsubscribe@...&lt;/a&gt;&amp;quot;
&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/-vuxml--eliminate-false-positive-for-samba-due-to-the-entry-in-old-portaudit.xml-tp20725271p20725271.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-20725074</id>
	<title>[vuxml] net/samba3, net/samba32-devel: document and fix CVE-2008-4314</title>
	<published>2008-11-27T11:59:59Z</published>
	<updated>2008-11-27T11:59:59Z</updated>
	<author>
		<name>Eygene Ryabinkin-3</name>
	</author>
	<content type="html">&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt;Submitter-Id:	current-users
&lt;br&gt;&amp;gt;Originator:	Eygene Ryabinkin
&lt;br&gt;&amp;gt;Organization:	Code Labs
&lt;br&gt;&amp;gt;Confidential:	no 
&lt;br&gt;&amp;gt;Synopsis:	[vuxml] [patch] net/samba3, net/samba32-devel: document and fix CVE-2008-4314
&lt;br&gt;&amp;gt;Severity:	serious
&lt;br&gt;&amp;gt;Priority:	high
&lt;br&gt;&amp;gt;Category:	ports
&lt;br&gt;&amp;gt;Class:		sw-bug
&lt;br&gt;&amp;gt;Release:	FreeBSD 7.1-PRERELEASE i386
&lt;br&gt;&amp;gt;Environment:
&lt;/div&gt;&lt;br&gt;System: FreeBSD 7.1-PRERELEASE i386
&lt;br&gt;&lt;br&gt;&amp;gt;Description:
&lt;br&gt;&lt;br&gt;Samba team discovered memory disclosure vulnerability:
&lt;br&gt;&amp;nbsp; &lt;a href=&quot;http://www.samba.org/samba/security/CVE-2008-4314.html&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.samba.org/samba/security/CVE-2008-4314.html&lt;/a&gt;&lt;br&gt;&lt;br&gt;&amp;gt;How-To-Repeat:
&lt;br&gt;&lt;br&gt;Read document at the above link.
&lt;br&gt;&lt;br&gt;&amp;gt;Fix:
&lt;br&gt;&lt;br&gt;The following patch updates both net/samba3 and net/samba32-devel,
&lt;br&gt;patches are taken directly from vendor. &amp;nbsp;I had just tested the
&lt;br&gt;compilability of those, but assuming that vendor knows what he is doing
&lt;br&gt;and taking into account the simplicity of patches, I am mostly confident
&lt;br&gt;that the updated versions will work fine.
&lt;br&gt;&lt;br&gt;--- vendor-fixes-for-CVE-2008-4314.diff begins here ---
&lt;br&gt;&amp;gt;From a1baef8a3ae57552559bd2cc7bb575011c06f23b Mon Sep 17 00:00:00 2001
&lt;br&gt;From: Eygene Ryabinkin &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=20725074&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;rea-fbsd@...&lt;/a&gt;&amp;gt;
&lt;br&gt;Date: Thu, 27 Nov 2008 22:50:14 +0300
&lt;br&gt;&lt;br&gt;&lt;a href=&quot;http://www.samba.org/samba/security/CVE-2008-4314.html&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.samba.org/samba/security/CVE-2008-4314.html&lt;/a&gt;&lt;br&gt;&lt;a href=&quot;http://www.samba.org/samba/ftp/patches/security/samba-3.0.32-CVE-2008-4314.patch&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.samba.org/samba/ftp/patches/security/samba-3.0.32-CVE-2008-4314.patch&lt;/a&gt;&lt;br&gt;&lt;a href=&quot;http://www.samba.org/samba/ftp/patches/security/samba-3.2.4-CVE-2008-4314.patch&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.samba.org/samba/ftp/patches/security/samba-3.2.4-CVE-2008-4314.patch&lt;/a&gt;&lt;br&gt;&lt;br&gt;Signed-off-by: Eygene Ryabinkin &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=20725074&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;rea-fbsd@...&lt;/a&gt;&amp;gt;
&lt;br&gt;---
&lt;br&gt;&amp;nbsp;net/samba3/Makefile &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; | &amp;nbsp; &amp;nbsp;2 +-
&lt;br&gt;&amp;nbsp;net/samba3/files/patch-CVE-2008-4314 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;| &amp;nbsp; 74 +++++++++++++++++++++++++++
&lt;br&gt;&amp;nbsp;net/samba32-devel/Makefile &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;| &amp;nbsp; &amp;nbsp;1 +
&lt;br&gt;&amp;nbsp;net/samba32-devel/files/patch-CVE-2008-4314 | &amp;nbsp; 74 +++++++++++++++++++++++++++
&lt;br&gt;&amp;nbsp;4 files changed, 150 insertions(+), 1 deletions(-)
&lt;br&gt;&amp;nbsp;create mode 100644 net/samba3/files/patch-CVE-2008-4314
&lt;br&gt;&amp;nbsp;create mode 100644 net/samba32-devel/files/patch-CVE-2008-4314
&lt;br&gt;&lt;br&gt;diff --git a/net/samba3/Makefile b/net/samba3/Makefile
&lt;br&gt;index 117c9fc..f37fe5d 100644
&lt;br&gt;--- a/net/samba3/Makefile
&lt;br&gt;+++ b/net/samba3/Makefile
&lt;br&gt;@@ -7,7 +7,7 @@
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;PORTNAME=		samba
&lt;br&gt;&amp;nbsp;PORTVERSION?=		3.0.32
&lt;br&gt;-PORTREVISION=		1
&lt;br&gt;+PORTREVISION=		2
&lt;br&gt;&amp;nbsp;PORTEPOCH?=		1
&lt;br&gt;&amp;nbsp;CATEGORIES?=		net
&lt;br&gt;&amp;nbsp;MASTER_SITES=		${MASTER_SITE_SAMBA}
&lt;br&gt;diff --git a/net/samba3/files/patch-CVE-2008-4314 b/net/samba3/files/patch-CVE-2008-4314
&lt;br&gt;new file mode 100644
&lt;br&gt;index 0000000..b19dc4c
&lt;br&gt;--- /dev/null
&lt;br&gt;+++ b/net/samba3/files/patch-CVE-2008-4314
&lt;br&gt;@@ -0,0 +1,74 @@
&lt;br&gt;+Obtained from: &lt;a href=&quot;http://www.samba.org/samba/ftp/patches/security/samba-3.2.4-CVE-2008-4314.patch&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.samba.org/samba/ftp/patches/security/samba-3.2.4-CVE-2008-4314.patch&lt;/a&gt;&lt;br&gt;+
&lt;br&gt;+From e334563f48f85b1580638d3dd444c2f9c97f05af Mon Sep 17 00:00:00 2001
&lt;br&gt;+From: Volker Lendecke &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=20725074&amp;i=2&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;vl@...&lt;/a&gt;&amp;gt;
&lt;br&gt;+Date: Sat, 8 Nov 2008 17:14:06 +0100
&lt;br&gt;+Subject: [PATCH] Fix the offset checks in the trans routines
&lt;br&gt;+
&lt;br&gt;+This fixes a potential crash bug, a client can make us read memory we
&lt;br&gt;+should not read. Luckily I got the disp checks right...
&lt;br&gt;+
&lt;br&gt;+Volker
&lt;br&gt;+---
&lt;br&gt;+ source/smbd/ipc.c &amp;nbsp; &amp;nbsp; | &amp;nbsp; &amp;nbsp;6 +++---
&lt;br&gt;+ source/smbd/nttrans.c | &amp;nbsp; &amp;nbsp;6 +++---
&lt;br&gt;+ source/smbd/trans2.c &amp;nbsp;| &amp;nbsp; &amp;nbsp;6 +++---
&lt;br&gt;+ 3 files changed, 9 insertions(+), 9 deletions(-)
&lt;br&gt;+
&lt;br&gt;+diff --git a/source/smbd/ipc.c b/source/smbd/ipc.c
&lt;br&gt;+index 6961a5c..a53bc5b 100644
&lt;br&gt;+--- smbd/ipc.c
&lt;br&gt;++++ smbd/ipc.c
&lt;br&gt;+@@ -764,10 +764,10 @@ void reply_transs(struct smb_request *req)
&lt;br&gt;+ 			goto bad_param;
&lt;br&gt;+ 		}
&lt;br&gt;+ 
&lt;br&gt;+-		if (ddisp &amp;gt; av_size ||
&lt;br&gt;++		if (doff &amp;gt; av_size ||
&lt;br&gt;+ 				dcnt &amp;gt; av_size ||
&lt;br&gt;+-				ddisp+dcnt &amp;gt; av_size ||
&lt;br&gt;+-				ddisp+dcnt &amp;lt; ddisp) {
&lt;br&gt;++				doff+dcnt &amp;gt; av_size ||
&lt;br&gt;++				doff+dcnt &amp;lt; doff) {
&lt;br&gt;+ 			goto bad_param;
&lt;br&gt;+ 		}
&lt;br&gt;+ 
&lt;br&gt;+diff --git a/source/smbd/nttrans.c b/source/smbd/nttrans.c
&lt;br&gt;+index 13caf77..ef81404 100644
&lt;br&gt;+--- smbd/nttrans.c
&lt;br&gt;++++ smbd/nttrans.c
&lt;br&gt;+@@ -2853,10 +2853,10 @@ void reply_nttranss(struct smb_request *req)
&lt;br&gt;+ 			goto bad_param;
&lt;br&gt;+ 		}
&lt;br&gt;+ 
&lt;br&gt;+-		if (ddisp &amp;gt; av_size ||
&lt;br&gt;++		if (doff &amp;gt; av_size ||
&lt;br&gt;+ 				dcnt &amp;gt; av_size ||
&lt;br&gt;+-				ddisp+dcnt &amp;gt; av_size ||
&lt;br&gt;+-				ddisp+dcnt &amp;lt; ddisp) {
&lt;br&gt;++				doff+dcnt &amp;gt; av_size ||
&lt;br&gt;++				doff+dcnt &amp;lt; doff) {
&lt;br&gt;+ 			goto bad_param;
&lt;br&gt;+ 		}
&lt;br&gt;+ 
&lt;br&gt;+diff --git a/source/smbd/trans2.c b/source/smbd/trans2.c
&lt;br&gt;+index acc424f..c7edec1 100644
&lt;br&gt;+--- smbd/trans2.c
&lt;br&gt;++++ smbd/trans2.c
&lt;br&gt;+@@ -7785,10 +7785,10 @@ void reply_transs2(struct smb_request *req)
&lt;br&gt;+ 			goto bad_param;
&lt;br&gt;+ 		}
&lt;br&gt;+ 
&lt;br&gt;+-		if (ddisp &amp;gt; av_size ||
&lt;br&gt;++		if (doff &amp;gt; av_size ||
&lt;br&gt;+ 				dcnt &amp;gt; av_size ||
&lt;br&gt;+-				ddisp+dcnt &amp;gt; av_size ||
&lt;br&gt;+-				ddisp+dcnt &amp;lt; ddisp) {
&lt;br&gt;++				doff+dcnt &amp;gt; av_size ||
&lt;br&gt;++				doff+dcnt &amp;lt; doff) {
&lt;br&gt;+ 			goto bad_param;
&lt;br&gt;+ 		}
&lt;br&gt;+ 
&lt;br&gt;+-- 
&lt;br&gt;+1.5.5
&lt;br&gt;+
&lt;br&gt;diff --git a/net/samba32-devel/Makefile b/net/samba32-devel/Makefile
&lt;br&gt;index bd3482e..c57a317 100644
&lt;br&gt;--- a/net/samba32-devel/Makefile
&lt;br&gt;+++ b/net/samba32-devel/Makefile
&lt;br&gt;@@ -7,6 +7,7 @@
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;PORTNAME=		samba
&lt;br&gt;&amp;nbsp;PORTVERSION?=		3.2.4
&lt;br&gt;+PORTREVISION?=		1
&lt;br&gt;&amp;nbsp;CATEGORIES?=		net
&lt;br&gt;&amp;nbsp;MASTER_SITES=		${MASTER_SITE_SAMBA}
&lt;br&gt;&amp;nbsp;MASTER_SITE_SUBDIR=	. old-versions rc pre
&lt;br&gt;diff --git a/net/samba32-devel/files/patch-CVE-2008-4314 b/net/samba32-devel/files/patch-CVE-2008-4314
&lt;br&gt;new file mode 100644
&lt;br&gt;index 0000000..b19dc4c
&lt;br&gt;--- /dev/null
&lt;br&gt;+++ b/net/samba32-devel/files/patch-CVE-2008-4314
&lt;br&gt;@@ -0,0 +1,74 @@
&lt;br&gt;+Obtained from: &lt;a href=&quot;http://www.samba.org/samba/ftp/patches/security/samba-3.2.4-CVE-2008-4314.patch&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.samba.org/samba/ftp/patches/security/samba-3.2.4-CVE-2008-4314.patch&lt;/a&gt;&lt;br&gt;+
&lt;br&gt;+From e334563f48f85b1580638d3dd444c2f9c97f05af Mon Sep 17 00:00:00 2001
&lt;br&gt;+From: Volker Lendecke &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=20725074&amp;i=3&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;vl@...&lt;/a&gt;&amp;gt;
&lt;br&gt;+Date: Sat, 8 Nov 2008 17:14:06 +0100
&lt;br&gt;+Subject: [PATCH] Fix the offset checks in the trans routines
&lt;br&gt;+
&lt;br&gt;+This fixes a potential crash bug, a client can make us read memory we
&lt;br&gt;+should not read. Luckily I got the disp checks right...
&lt;br&gt;+
&lt;br&gt;+Volker
&lt;br&gt;+---
&lt;br&gt;+ source/smbd/ipc.c &amp;nbsp; &amp;nbsp; | &amp;nbsp; &amp;nbsp;6 +++---
&lt;br&gt;+ source/smbd/nttrans.c | &amp;nbsp; &amp;nbsp;6 +++---
&lt;br&gt;+ source/smbd/trans2.c &amp;nbsp;| &amp;nbsp; &amp;nbsp;6 +++---
&lt;br&gt;+ 3 files changed, 9 insertions(+), 9 deletions(-)
&lt;br&gt;+
&lt;br&gt;+diff --git a/source/smbd/ipc.c b/source/smbd/ipc.c
&lt;br&gt;+index 6961a5c..a53bc5b 100644
&lt;br&gt;+--- smbd/ipc.c
&lt;br&gt;++++ smbd/ipc.c
&lt;br&gt;+@@ -764,10 +764,10 @@ void reply_transs(struct smb_request *req)
&lt;br&gt;+ 			goto bad_param;
&lt;br&gt;+ 		}
&lt;br&gt;+ 
&lt;br&gt;+-		if (ddisp &amp;gt; av_size ||
&lt;br&gt;++		if (doff &amp;gt; av_size ||
&lt;br&gt;+ 				dcnt &amp;gt; av_size ||
&lt;br&gt;+-				ddisp+dcnt &amp;gt; av_size ||
&lt;br&gt;+-				ddisp+dcnt &amp;lt; ddisp) {
&lt;br&gt;++				doff+dcnt &amp;gt; av_size ||
&lt;br&gt;++				doff+dcnt &amp;lt; doff) {
&lt;br&gt;+ 			goto bad_param;
&lt;br&gt;+ 		}
&lt;br&gt;+ 
&lt;br&gt;+diff --git a/source/smbd/nttrans.c b/source/smbd/nttrans.c
&lt;br&gt;+index 13caf77..ef81404 100644
&lt;br&gt;+--- smbd/nttrans.c
&lt;br&gt;++++ smbd/nttrans.c
&lt;br&gt;+@@ -2853,10 +2853,10 @@ void reply_nttranss(struct smb_request *req)
&lt;br&gt;+ 			goto bad_param;
&lt;br&gt;+ 		}
&lt;br&gt;+ 
&lt;br&gt;+-		if (ddisp &amp;gt; av_size ||
&lt;br&gt;++		if (doff &amp;gt; av_size ||
&lt;br&gt;+ 				dcnt &amp;gt; av_size ||
&lt;br&gt;+-				ddisp+dcnt &amp;gt; av_size ||
&lt;br&gt;+-				ddisp+dcnt &amp;lt; ddisp) {
&lt;br&gt;++				doff+dcnt &amp;gt; av_size ||
&lt;br&gt;++				doff+dcnt &amp;lt; doff) {
&lt;br&gt;+ 			goto bad_param;
&lt;br&gt;+ 		}
&lt;br&gt;+ 
&lt;br&gt;+diff --git a/source/smbd/trans2.c b/source/smbd/trans2.c
&lt;br&gt;+index acc424f..c7edec1 100644
&lt;br&gt;+--- smbd/trans2.c
&lt;br&gt;++++ smbd/trans2.c
&lt;br&gt;+@@ -7785,10 +7785,10 @@ void reply_transs2(struct smb_request *req)
&lt;br&gt;+ 			goto bad_param;
&lt;br&gt;+ 		}
&lt;br&gt;+ 
&lt;br&gt;+-		if (ddisp &amp;gt; av_size ||
&lt;br&gt;++		if (doff &amp;gt; av_size ||
&lt;br&gt;+ 				dcnt &amp;gt; av_size ||
&lt;br&gt;+-				ddisp+dcnt &amp;gt; av_size ||
&lt;br&gt;+-				ddisp+dcnt &amp;lt; ddisp) {
&lt;br&gt;++				doff+dcnt &amp;gt; av_size ||
&lt;br&gt;++				doff+dcnt &amp;lt; doff) {
&lt;br&gt;+ 			goto bad_param;
&lt;br&gt;+ 		}
&lt;br&gt;+ 
&lt;br&gt;+-- 
&lt;br&gt;+1.5.5
&lt;br&gt;+
&lt;br&gt;-- 
&lt;br&gt;1.6.0.4
&lt;br&gt;&lt;br&gt;--- vendor-fixes-for-CVE-2008-4314.diff ends here ---
&lt;br&gt;&lt;br&gt;The following VuXML entry should be evaluated and added:
&lt;br&gt;--- vuln.xml begins here ---
&lt;br&gt;&amp;nbsp; &amp;lt;vuln vid=&amp;quot;&amp;quot;&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;lt;topic&amp;gt;samba -- potential leakage of arbitrary memory contents&amp;lt;/topic&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;lt;affects&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;package&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;name&amp;gt;samba32-devel&amp;lt;/name&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;range&amp;gt;&amp;lt;lt&amp;gt;3.2.4_1&amp;lt;/lt&amp;gt;&amp;lt;/range&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/package&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;package&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;name&amp;gt;samba3&amp;lt;/name&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;range&amp;gt;&amp;lt;ge&amp;gt;3.0.29,1&amp;lt;/ge&amp;gt;&amp;lt;lt&amp;gt;3.0.32_2,1&amp;lt;/lt&amp;gt;&amp;lt;/range&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/package&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/affects&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;lt;description&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;body xmlns=&amp;quot;&lt;a href=&quot;http://www.w3.org/1999/xhtml&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.w3.org/1999/xhtml&lt;/a&gt;&amp;quot;&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;p&amp;gt;Vendor reports:&amp;lt;/p&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;blockquote cite=&amp;quot;&lt;a href=&quot;http://www.samba.org/samba/security/CVE-2008-4314.html&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.samba.org/samba/security/CVE-2008-4314.html&lt;/a&gt;&amp;quot;&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;p&amp;gt;Samba 3.0.29 to 3.2.4 can potentially leak arbitrary
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; memory contents to malicious clients&amp;lt;/p&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/blockquote&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/body&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/description&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;lt;references&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;cvename&amp;gt;CVE-2008-4314&amp;lt;/cvename&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;url&amp;gt;&lt;a href=&quot;http://www.samba.org/samba/security/CVE-2008-4314.html&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.samba.org/samba/security/CVE-2008-4314.html&lt;/a&gt;&amp;lt;/url&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;url&amp;gt;&lt;a href=&quot;http://www.ubuntu.com/usn/USN-680-1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.ubuntu.com/usn/USN-680-1&lt;/a&gt;&amp;lt;/url&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/references&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;lt;dates&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;entry&amp;gt;TODAY&amp;lt;/entry&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;discovery&amp;gt;2008-11-27&amp;lt;/discovery&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/dates&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;lt;/vuln&amp;gt;
&lt;br&gt;--- vuln.xml ends here ---
&lt;br&gt;_______________________________________________
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=20725074&amp;i=4&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;freebsd-vuxml@...&lt;/a&gt; mailing list
&lt;br&gt;&lt;a href=&quot;http://lists.freebsd.org/mailman/listinfo/freebsd-vuxml&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://lists.freebsd.org/mailman/listinfo/freebsd-vuxml&lt;/a&gt;&lt;br&gt;To unsubscribe, send any mail to &amp;quot;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=20725074&amp;i=5&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;freebsd-vuxml-unsubscribe@...&lt;/a&gt;&amp;quot;
&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/-vuxml--net-samba3%2C-net-samba32-devel%3A-document-and-fix-CVE-2008-4314-tp20725074p20725074.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-20689937</id>
	<title>[vuxml] print/cups-base: fix buffer overflow in the PNG reader</title>
	<published>2008-11-25T13:21:34Z</published>
	<updated>2008-11-25T13:21:34Z</updated>
	<author>
		<name>Eygene Ryabinkin-3</name>
	</author>
	<content type="html">&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt;Submitter-Id:	current-users
&lt;br&gt;&amp;gt;Originator:	Eygene Ryabinkin
&lt;br&gt;&amp;gt;Organization:	Code Labs
&lt;br&gt;&amp;gt;Confidential:	no 
&lt;br&gt;&amp;gt;Synopsis:	[vuxml] [patch] print/cups-base: fix buffer overflow in the PNG reader
&lt;br&gt;&amp;gt;Severity:	serious
&lt;br&gt;&amp;gt;Priority:	high
&lt;br&gt;&amp;gt;Category:	ports
&lt;br&gt;&amp;gt;Class:		sw-bug
&lt;br&gt;&amp;gt;Release:	FreeBSD 7.1-PRERELEASE i386
&lt;br&gt;&amp;gt;Environment:
&lt;/div&gt;&lt;br&gt;System: FreeBSD 7.1-PRERELEASE i386
&lt;br&gt;&lt;br&gt;&amp;gt;Description:
&lt;br&gt;&lt;br&gt;Release notes for CUPS 1.3.10 say that there were potential buffer
&lt;br&gt;overflow in the PNG reader code:
&lt;br&gt;&amp;nbsp; &lt;a href=&quot;http://svn.easysw.com/public/cups/trunk/CHANGES-1.3.txt&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://svn.easysw.com/public/cups/trunk/CHANGES-1.3.txt&lt;/a&gt;&lt;br&gt;&lt;br&gt;The corresponding entry in the CUPS bug tracker is at
&lt;br&gt;&amp;nbsp; &lt;a href=&quot;http://www.cups.org/str.php?L2974&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.cups.org/str.php?L2974&lt;/a&gt;&lt;br&gt;&lt;br&gt;&amp;gt;How-To-Repeat:
&lt;br&gt;&lt;br&gt;Look at the above URLs.
&lt;br&gt;&lt;br&gt;&amp;gt;Fix:
&lt;br&gt;&lt;br&gt;The following patch updates the port itself. &amp;nbsp;I had used PORTREVISION
&lt;br&gt;of 2, but the patch was made against the clean 1.3.9 tree. &amp;nbsp;If it will
&lt;br&gt;be applied simultaneously with the patch in ports/129001, then the
&lt;br&gt;PORTVERSION can be set to 1. &amp;nbsp;In this case the below VuXML entry
&lt;br&gt;should be changed to reflect this.
&lt;br&gt;&lt;br&gt;--- 1.3.9-fix-potential-PNG-buffer-overflow.diff begins here ---
&lt;br&gt;&amp;gt;From 95c304d2b3ce819ea68f493f6dcc2fed76ac2029 Mon Sep 17 00:00:00 2001
&lt;br&gt;From: Eygene Ryabinkin &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=20689937&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;rea-fbsd@...&lt;/a&gt;&amp;gt;
&lt;br&gt;Date: Wed, 26 Nov 2008 00:11:53 +0300
&lt;br&gt;&lt;br&gt;See: &lt;a href=&quot;http://svn.easysw.com/public/cups/trunk/CHANGES-1.3.txt&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://svn.easysw.com/public/cups/trunk/CHANGES-1.3.txt&lt;/a&gt;&lt;br&gt;See: &lt;a href=&quot;http://www.openwall.com/lists/oss-security/2008/11/25/2&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.openwall.com/lists/oss-security/2008/11/25/2&lt;/a&gt;&lt;br&gt;&lt;br&gt;Signed-off-by: Eygene Ryabinkin &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=20689937&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;rea-fbsd@...&lt;/a&gt;&amp;gt;
&lt;br&gt;---
&lt;br&gt;&amp;nbsp;print/cups-base/Makefile &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;| &amp;nbsp; &amp;nbsp;1 +
&lt;br&gt;&amp;nbsp;print/cups-base/files/patch-str2974 | &amp;nbsp; 27 +++++++++++++++++++++++++++
&lt;br&gt;&amp;nbsp;2 files changed, 28 insertions(+), 0 deletions(-)
&lt;br&gt;&amp;nbsp;create mode 100644 print/cups-base/files/patch-str2974
&lt;br&gt;&lt;br&gt;diff --git a/print/cups-base/Makefile b/print/cups-base/Makefile
&lt;br&gt;index 87e5ee3..aad7c52 100644
&lt;br&gt;--- a/print/cups-base/Makefile
&lt;br&gt;+++ b/print/cups-base/Makefile
&lt;br&gt;@@ -7,6 +7,7 @@
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;PORTNAME=	cups
&lt;br&gt;&amp;nbsp;PORTVERSION=	1.3.9
&lt;br&gt;+PORTREVISION=	2
&lt;br&gt;&amp;nbsp;DISTVERSIONSUFFIX=	-source
&lt;br&gt;&amp;nbsp;CATEGORIES=	print
&lt;br&gt;&amp;nbsp;MASTER_SITES=	EASYSW/${PORTNAME}/${DISTVERSION}
&lt;br&gt;diff --git a/print/cups-base/files/patch-str2974 b/print/cups-base/files/patch-str2974
&lt;br&gt;new file mode 100644
&lt;br&gt;index 0000000..f407d55
&lt;br&gt;--- /dev/null
&lt;br&gt;+++ b/print/cups-base/files/patch-str2974
&lt;br&gt;@@ -0,0 +1,27 @@
&lt;br&gt;+Fix for the buffer overflow in the PNG reading code
&lt;br&gt;+
&lt;br&gt;+See: &lt;a href=&quot;http://www.cups.org/str.php?L2974&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.cups.org/str.php?L2974&lt;/a&gt;&lt;br&gt;+Obtained from: &lt;a href=&quot;http://www.cups.org/strfiles/2974/str2974.patch&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.cups.org/strfiles/2974/str2974.patch&lt;/a&gt;&lt;br&gt;+
&lt;br&gt;+Index: filter/image-png.c
&lt;br&gt;+===================================================================
&lt;br&gt;+--- filter/image-png.c	(revision 8062)
&lt;br&gt;++++ filter/image-png.c	(working copy)
&lt;br&gt;+@@ -178,7 +178,7 @@
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; bufsize = img-&amp;gt;xsize * img-&amp;gt;ysize;
&lt;br&gt;+ 
&lt;br&gt;+- &amp;nbsp; &amp;nbsp; &amp;nbsp;if ((bufsize / img-&amp;gt;ysize) != img-&amp;gt;xsize)
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp;if ((bufsize / img-&amp;gt;xsize) != img-&amp;gt;ysize)
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; {
&lt;br&gt;+ 	fprintf(stderr, &amp;quot;DEBUG: PNG image dimensions (%ux%u) too large!\n&amp;quot;,
&lt;br&gt;+ 		(unsigned)width, (unsigned)height);
&lt;br&gt;+@@ -190,7 +190,7 @@
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; bufsize = img-&amp;gt;xsize * img-&amp;gt;ysize * 3;
&lt;br&gt;+ 
&lt;br&gt;+- &amp;nbsp; &amp;nbsp; &amp;nbsp;if ((bufsize / (img-&amp;gt;ysize * 3)) != img-&amp;gt;xsize)
&lt;br&gt;++ &amp;nbsp; &amp;nbsp; &amp;nbsp;if ((bufsize / (img-&amp;gt;xsize * 3)) != img-&amp;gt;ysize)
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; {
&lt;br&gt;+ 	fprintf(stderr, &amp;quot;DEBUG: PNG image dimensions (%ux%u) too large!\n&amp;quot;,
&lt;br&gt;+ 		(unsigned)width, (unsigned)height);
&lt;br&gt;-- 
&lt;br&gt;1.6.0.4
&lt;br&gt;--- 1.3.9-fix-potential-PNG-buffer-overflow.diff ends here ---
&lt;br&gt;&lt;br&gt;The following VuXML entry should be evaluated and added:
&lt;br&gt;--- vuln.xml begins here ---
&lt;br&gt;&amp;nbsp; &amp;lt;vuln vid=&amp;quot;unknown&amp;quot;&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;lt;topic&amp;gt;cups -- potential buffer overflow in PNG reading code&amp;lt;/topic&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;lt;affects&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;package&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;name&amp;gt;cups-base&amp;lt;/name&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;range&amp;gt;&amp;lt;lt&amp;gt;1.3.9_2&amp;lt;/lt&amp;gt;&amp;lt;/range&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/package&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/affects&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;lt;description&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;body xmlns=&amp;quot;&lt;a href=&quot;http://www.w3.org/1999/xhtml&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.w3.org/1999/xhtml&lt;/a&gt;&amp;quot;&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;p&amp;gt;ChangeLog for CUPS 1.3.10 says:&amp;lt;/p&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;blockquote cite=&amp;quot;&lt;a href=&quot;http://svn.easysw.com/public/cups/trunk/CHANGES-1.3.txt&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://svn.easysw.com/public/cups/trunk/CHANGES-1.3.txt&lt;/a&gt;&amp;quot;&amp;gt;
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;p&amp;gt;SECURITY: The PNG image reading code did not validate
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; the image size properly, leading to a potential buffer
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; overflow (STR #2974)&amp;lt;/p&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/blockquote&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/body&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/description&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;lt;references&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;url&amp;gt;&lt;a href=&quot;http://svn.easysw.com/public/cups/trunk/CHANGES-1.3.txt&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://svn.easysw.com/public/cups/trunk/CHANGES-1.3.txt&lt;/a&gt;&amp;lt;/url&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;mlist&amp;gt;&lt;a href=&quot;http://www.openwall.com/lists/oss-security/2008/11/25/2&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.openwall.com/lists/oss-security/2008/11/25/2&lt;/a&gt;&amp;lt;/mlist&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/references&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;lt;dates&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;discovery&amp;gt;2008-11-25&amp;lt;/discovery&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;entry&amp;gt;today&amp;lt;/entry&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/dates&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;lt;/vuln&amp;gt;
&lt;br&gt;--- vuln.xml ends here ---
&lt;br&gt;_______________________________________________
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=20689937&amp;i=2&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;freebsd-vuxml@...&lt;/a&gt; mailing list
&lt;br&gt;&lt;a href=&quot;http://lists.freebsd.org/mailman/listinfo/freebsd-vuxml&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://lists.freebsd.org/mailman/listinfo/freebsd-vuxml&lt;/a&gt;&lt;br&gt;To unsubscribe, send any mail to &amp;quot;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=20689937&amp;i=3&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;freebsd-vuxml-unsubscribe@...&lt;/a&gt;&amp;quot;
&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/-vuxml--print-cups-base%3A-fix-buffer-overflow-in-the-PNG-reader-tp20689937p20689937.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-20689765</id>
	<title>[vuxml] editors/openoffice.org-2: document CVE-2008-2237 and CVE-2008-2238</title>
	<published>2008-11-25T13:01:53Z</published>
	<updated>2008-11-25T13:01:53Z</updated>
	<author>
		<name>Eygene Ryabinkin-3</name>
	</author>
	<content type="html">&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt;Submitter-Id:	current-users
&lt;br&gt;&amp;gt;Originator:	Eygene Ryabinkin
&lt;br&gt;&amp;gt;Organization:	Code Labs
&lt;br&gt;&amp;gt;Confidential:	no 
&lt;br&gt;&amp;gt;Synopsis:	[vuxml] editors/openoffice.org-2: document CVE-2008-2237 and CVE-2008-2238
&lt;br&gt;&amp;gt;Severity:	serious
&lt;br&gt;&amp;gt;Priority:	high
&lt;br&gt;&amp;gt;Category:	ports
&lt;br&gt;&amp;gt;Class:		sw-bug
&lt;br&gt;&amp;gt;Release:	FreeBSD 7.1-PRERELEASE i386
&lt;br&gt;&amp;gt;Environment:
&lt;/div&gt;&lt;br&gt;System: FreeBSD 7.1-PRERELEASE i386
&lt;br&gt;&lt;br&gt;&amp;gt;Description:
&lt;br&gt;&lt;br&gt;WMS/EMF processing flaws were found in the openoffice.org 2.x:
&lt;br&gt;&amp;nbsp; &lt;a href=&quot;http://www.securityfocus.com/bid/31962&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.securityfocus.com/bid/31962&lt;/a&gt;&lt;br&gt;&lt;br&gt;&amp;gt;How-To-Repeat:
&lt;br&gt;&lt;br&gt;Look at
&lt;br&gt;&amp;nbsp; &lt;a href=&quot;http://www.securityfocus.com/bid/31962&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.securityfocus.com/bid/31962&lt;/a&gt;&lt;br&gt;&amp;nbsp; &lt;a href=&quot;http://www.openoffice.org/security/cves/CVE-2008-2237.html&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.openoffice.org/security/cves/CVE-2008-2237.html&lt;/a&gt;&lt;br&gt;&amp;nbsp; &lt;a href=&quot;http://www.openoffice.org/security/cves/CVE-2008-2238.html&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.openoffice.org/security/cves/CVE-2008-2238.html&lt;/a&gt;&lt;br&gt;&lt;br&gt;&amp;gt;Fix:
&lt;br&gt;&lt;br&gt;Since 2.4.2 is in the tree, there is no point to upgrade any ports.
&lt;br&gt;I believe that openoffice-2-RC and openoffice-2-devel are vulnerable
&lt;br&gt;too, because vendor says about affected releases &amp;quot;All versions prior
&lt;br&gt;to OpenOffice.org 2.4.2&amp;quot;.
&lt;br&gt;&lt;br&gt;The following VuXML entry should be evaluated and added:
&lt;br&gt;--- vuln.xml begins here ---
&lt;br&gt;&amp;nbsp; &amp;lt;vuln vid=&amp;quot;&amp;quot;&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;lt;topic&amp;gt;openoffice -- arbitrary code execution by processing crafted EMF/WMF files&amp;lt;/topic&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;lt;affects&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;package&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;name&amp;gt;openoffice.org&amp;lt;/name&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;range&amp;gt;&amp;lt;ge&amp;gt;2.4&amp;lt;/ge&amp;gt;&amp;lt;lt&amp;gt;2.4.2&amp;lt;/lt&amp;gt;&amp;lt;/range&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;range&amp;gt;&amp;lt;ge&amp;gt;2.4.20040402&amp;lt;/ge&amp;gt;&amp;lt;/range&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/package&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/affects&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;lt;description&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;body xmlns=&amp;quot;&lt;a href=&quot;http://www.w3.org/1999/xhtml&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.w3.org/1999/xhtml&lt;/a&gt;&amp;quot;&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;p&amp;gt;Vendor notifies:&amp;lt;/p&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;blockquote cite=&amp;quot;&lt;a href=&quot;http://www.openoffice.org/security/cves/CVE-2008-2237.html&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.openoffice.org/security/cves/CVE-2008-2237.html&lt;/a&gt;&amp;quot;&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;p&amp;gt;A security vulnerability with the way OpenOffice 2.x
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; process WMF files may allow a remote unprivileged user
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; who provides a StarOffice/StarSuite document that is
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; opened by a local user to execute arbitrary commands on
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; the system with the privileges of the user running
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; StarOffice/StarSuite. &amp;nbsp;No working exploit is known right
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; now.&amp;lt;/p&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/blockquote&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;blockquote cite=&amp;quot;&lt;a href=&quot;http://www.openoffice.org/security/cves/CVE-2008-2238.html&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.openoffice.org/security/cves/CVE-2008-2238.html&lt;/a&gt;&amp;quot;&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;p&amp;gt;A security vulnerability with the way OpenOffice 2.x
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; process EMF files may allow a remote unprivileged user
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; who provides a StarOffice/StarSuite document that is
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; opened by a local user to execute arbitrary commands on
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; the system with the privileges of the user running
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; StarOffice/StarSuite. No working exploit is known right
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; now.&amp;lt;/p&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/blockquote&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/body&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/description&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;lt;references&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;url&amp;gt;&lt;a href=&quot;http://www.openoffice.org/security/cves/CVE-2008-2237.html&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.openoffice.org/security/cves/CVE-2008-2237.html&lt;/a&gt;&amp;lt;/url&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;url&amp;gt;&lt;a href=&quot;http://www.openoffice.org/security/cves/CVE-2008-2238.html&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.openoffice.org/security/cves/CVE-2008-2238.html&lt;/a&gt;&amp;lt;/url&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;cvename&amp;gt;CVE-2008-2237&amp;lt;/cvename&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;cvename&amp;gt;CVE-2008-2238&amp;lt;/cvename&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;bid&amp;gt;31962&amp;lt;/bid&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/references&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;lt;dates&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;discovery&amp;gt;2008-10-29&amp;lt;/discovery&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;entry&amp;gt;today&amp;lt;/entry&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/dates&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;lt;/vuln&amp;gt;
&lt;br&gt;--- vuln.xml ends here ---
&lt;br&gt;I hope that the version specification catches all openoffice 2.x
&lt;br&gt;with x &amp;lt; 4.2 as well as -RC and -devel versions.
&lt;br&gt;_______________________________________________
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=20689765&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;freebsd-vuxml@...&lt;/a&gt; mailing list
&lt;br&gt;&lt;a href=&quot;http://lists.freebsd.org/mailman/listinfo/freebsd-vuxml&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://lists.freebsd.org/mailman/listinfo/freebsd-vuxml&lt;/a&gt;&lt;br&gt;To unsubscribe, send any mail to &amp;quot;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=20689765&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;freebsd-vuxml-unsubscribe@...&lt;/a&gt;&amp;quot;
&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/-vuxml--editors-openoffice.org-2%3A-document-CVE-2008-2237-and-CVE-2008-2238-tp20689765p20689765.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-11807033</id>
	<title>Re: ports/114906: update net/asterisk to 1.4.9</title>
	<published>2007-07-26T02:44:02Z</published>
	<updated>2007-07-26T02:44:02Z</updated>
	<author>
		<name>Matthew Seaman-2</name>
	</author>
	<content type="html">-----BEGIN PGP SIGNED MESSAGE-----
&lt;br&gt;Hash: SHA256
&lt;br&gt;&lt;br&gt;Phillip N. wrote:
&lt;br&gt;&lt;br&gt;&amp;gt; The motivation of the update is this:
&lt;br&gt;&amp;gt; &lt;a href=&quot;http://ftp.digium.com/pub/asa/ASA-2007-018.pdf&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://ftp.digium.com/pub/asa/ASA-2007-018.pdf&lt;/a&gt;&lt;br&gt;&amp;gt; &amp;quot;Exhaustion vulnerability in IAX2 channel driver&amp;quot;
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; the vulxml contains two thing i cannot figure out.
&lt;br&gt;&amp;gt; These are:
&lt;br&gt;&amp;gt; 	- vid (how is the id generated?)
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp;&amp;lt;vid&amp;gt; is the VuXML ID -- it's a unique tag per entry that can be
&lt;br&gt;used in eg. URLs. &amp;nbsp;See uuidgen(1) for how to generate one.
&lt;br&gt;&lt;br&gt;&amp;gt; 	- bid (what is it?)
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp;&amp;lt;bid&amp;gt; stands for 'Bugtraq ID' -- it's the reference number used
&lt;br&gt;on this site to identify the issue:
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &lt;a href=&quot;http://www.securityfocus.com/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.securityfocus.com/&lt;/a&gt;&lt;br&gt;&lt;br&gt;There are a number of other security related web sites that the
&lt;br&gt;VuXML markup caters for, as well as arbitrary URLs. &amp;nbsp;None of them
&lt;br&gt;are compulsory to have in a &amp;lt;references&amp;gt; section, but all relevant
&lt;br&gt;references should be provided.
&lt;br&gt;&lt;br&gt;See Jaques Vidrine's presentation for more info -- at
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &lt;a href=&quot;http://www.vuxml.org/files/VuXML_BSDCan.pdf&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.vuxml.org/files/VuXML_BSDCan.pdf&lt;/a&gt;&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Cheers,
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Matthew
&lt;br&gt;&lt;br&gt;- --
&lt;br&gt;Dr Matthew J Seaman MA, D.Phil. &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 7 Priory Courtyard
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Flat 3
&lt;br&gt;PGP: &lt;a href=&quot;http://www.infracaninophile.co.uk/pgpkey&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.infracaninophile.co.uk/pgpkey&lt;/a&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;Ramsgate
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Kent, CT11 9PW
&lt;br&gt;-----BEGIN PGP SIGNATURE-----
&lt;br&gt;Version: GnuPG v2.0.4 (FreeBSD)
&lt;br&gt;Comment: Using GnuPG with Mozilla - &lt;a href=&quot;http://enigmail.mozdev.org&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://enigmail.mozdev.org&lt;/a&gt;&lt;br&gt;&lt;br&gt;iD8DBQFGqF7S8Mjk52CukIwRCGSXAKCLdPGQYx+iCFrs+KfJzGE+PI7/6gCdHKDR
&lt;br&gt;Zia7H/D3lnaiDr2D3BbGvUM=
&lt;br&gt;=7EqW
&lt;br&gt;-----END PGP SIGNATURE-----
&lt;br&gt;_______________________________________________
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=11807033&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;freebsd-vuxml@...&lt;/a&gt; mailing list
&lt;br&gt;&lt;a href=&quot;http://lists.freebsd.org/mailman/listinfo/freebsd-vuxml&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://lists.freebsd.org/mailman/listinfo/freebsd-vuxml&lt;/a&gt;&lt;br&gt;To unsubscribe, send any mail to &amp;quot;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=11807033&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;freebsd-vuxml-unsubscribe@...&lt;/a&gt;&amp;quot;
&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Re%3A-ports-114906%3A-update-net-asterisk-to-1.4.9-tp11807033p11807033.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-9150473</id>
	<title>portaudit and linux-sun-jdk15</title>
	<published>2007-02-25T13:52:20Z</published>
	<updated>2007-02-25T13:52:20Z</updated>
	<author>
		<name>barbara.xxx1975</name>
	</author>
	<content type="html">&amp;gt;
&lt;br&gt;X-XaM3-API-Version: 4.3 (R1) (B3pl17)
&lt;br&gt;X-SenderIP: 82.49.197.26
&lt;br&gt;&lt;br&gt;I'm referring to the informations displayed on this page:
&lt;br&gt;&lt;a href=&quot;http://www.vuxml.org/freebsd/18e5428f-ae7c-11d9-837d-000e0c2e438a.html&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.vuxml.org/freebsd/18e5428f-ae7c-11d9-837d-000e0c2e438a.html&lt;/a&gt;&lt;br&gt;&lt;br&gt;Is the information about linux-sun-jdk15 correct?
&lt;br&gt;&lt;br&gt;1.5.* 	&amp;lt;= 	linux-sun-jdk 	&amp;lt;= 	1.5.2.02,2
&lt;br&gt;&lt;br&gt;I think that the correct version should be 1.5.0.02,2 considering also that a 1.5 based version &amp;gt;=1.5.1 doesn't (yet) exist.
&lt;br&gt;&lt;br&gt;&lt;br&gt;The last jdk versions for linux is 1.5.0.11 and the port with that version has been committed today, but portaudit is still complaining about this vulnerability.
&lt;br&gt;&lt;br&gt;Thank you.
&lt;br&gt;&lt;br&gt;&lt;br&gt;P.S.
&lt;br&gt;Sorry if I'm writing to too many people, but I'm not sure about who is responsible for that problem.
&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;------------------------------------------------------
&lt;br&gt;Passa a Infostrada. ADSL e Telefono senza limiti e senza canone Telecom
&lt;br&gt;&lt;a href=&quot;http://click.libero.it/infostrada25feb07&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://click.libero.it/infostrada25feb07&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=9150473&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;freebsd-vuxml@...&lt;/a&gt; mailing list
&lt;br&gt;&lt;a href=&quot;http://lists.freebsd.org/mailman/listinfo/freebsd-vuxml&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://lists.freebsd.org/mailman/listinfo/freebsd-vuxml&lt;/a&gt;&lt;br&gt;To unsubscribe, send any mail to &amp;quot;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=9150473&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;freebsd-vuxml-unsubscribe@...&lt;/a&gt;&amp;quot;
&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/portaudit-and-linux-sun-jdk15-tp9150473p9150473.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-7824175</id>
	<title>Re: zope -- restructuredText &quot;csv_table&quot; Information Disclosure</title>
	<published>2006-12-11T15:19:54Z</published>
	<updated>2006-12-11T15:19:54Z</updated>
	<author>
		<name>Yasushi Hayashi</name>
	</author>
	<content type="html">On 10/19/06, Andrew Pntyukhim wrote:
&lt;br&gt;&amp;gt; The vulnerability has been confirmed in these versions,
&lt;br&gt;&amp;gt; but as far as we know there are no versions confirmed
&lt;br&gt;&amp;gt; to be safe yet. To be on the safe side we never put an
&lt;br&gt;&amp;gt; upper limit on version numbers until we know it for
&lt;br&gt;&amp;gt; sure.
&lt;br&gt;&lt;br&gt;Please add upper limit to vid=&amp;quot;65a8f773-4a37-11db-a4cc-000a48049292&amp;quot;.
&lt;br&gt;There are two reasons.
&lt;br&gt;&lt;br&gt;(1) &amp;nbsp;I sent PRs for this vulnerability
&lt;br&gt;&amp;nbsp; This will update www/zope to zope-2.7.9_1 and www/zope28 to zope-2.8.8_1.
&lt;br&gt;&amp;nbsp; See:
&lt;br&gt;&amp;nbsp; &amp;nbsp; &lt;a href=&quot;http://www.freebsd.org/cgi/query-pr.cgi?pr=106505&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.freebsd.org/cgi/query-pr.cgi?pr=106505&lt;/a&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &lt;a href=&quot;http://www.freebsd.org/cgi/query-pr.cgi?pr=106508&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.freebsd.org/cgi/query-pr.cgi?pr=106508&lt;/a&gt;&lt;br&gt;&lt;br&gt;(2) &amp;nbsp;IT points TOO wide range
&lt;br&gt;&amp;nbsp; Current range causes for www/zope3 which does not have this vulnerable.
&lt;br&gt;&lt;br&gt;&amp;gt; &amp;gt; vxquery -t text /usr/ports/security/vuxml/vuln.xml zope-3.3.0
&lt;br&gt;&amp;gt; Topic: zope -- restructuredText &amp;quot;csv_table&amp;quot; Information Disclosure
&lt;br&gt;&amp;gt; Affects:
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; 0 &amp;lt;= zope
&lt;br&gt;&amp;gt; References:
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; bid:20022
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; cvename:CVE-2006-4684
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; url:&lt;a href=&quot;http://secunia.com/advisories/21947/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://secunia.com/advisories/21947/&lt;/a&gt;&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; url:&lt;a href=&quot;http://www.zope.org/Products/Zope/Hotfix-2006-08-21/Hotfix-20060821/READ&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.zope.org/Products/Zope/Hotfix-2006-08-21/Hotfix-20060821/READ&lt;/a&gt;&lt;br&gt;ME.txt
&lt;br&gt;&amp;gt; &amp;lt;URL:&lt;a href=&quot;http://vuxml.freebsd.org/65a8f773-4a37-11db-a4cc-000a48049292.html&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://vuxml.freebsd.org/65a8f773-4a37-11db-a4cc-000a48049292.html&lt;/a&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;gt;
&lt;br&gt;&lt;br&gt;&amp;gt; www# pwd
&lt;br&gt;&amp;gt; /usr/ports/www/zope3
&lt;br&gt;&amp;gt; www# make fetch
&lt;br&gt;&amp;gt; ===&amp;gt; &amp;nbsp;zope-3.3.0 has known vulnerabilities:
&lt;br&gt;&amp;gt; =&amp;gt; zope -- restructuredText &amp;quot;csv_table&amp;quot; Information Disclosure.
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;Reference: &amp;lt;&lt;a href=&quot;http://www.FreeBSD.org/ports/portaudit/65a8f773-4a37-11db-a4cc-00&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.FreeBSD.org/ports/portaudit/65a8f773-4a37-11db-a4cc-00&lt;/a&gt;&lt;br&gt;0a48049292.html&amp;gt;
&lt;br&gt;&amp;gt; =&amp;gt; Please update your ports tree and try again.
&lt;br&gt;&amp;gt; *** Error code 1
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Stop in /usr/ports/www/zope3.
&lt;br&gt;&amp;gt; www#
&lt;br&gt;&lt;br&gt;&lt;br&gt;Thank you for reading.
&lt;br&gt;&lt;br&gt;-- 
&lt;br&gt;----+----1----+----2----+----3----+----4----+----5----+----6----+----7--
&lt;br&gt;HAYASHI Yasushi &amp;nbsp;&amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=7824175&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;yasi@...&lt;/a&gt;&amp;gt;
&lt;br&gt;&lt;a href=&quot;http://www.yasi.to/blog&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.yasi.to/blog&lt;/a&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=7824175&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;freebsd-vuxml@...&lt;/a&gt; mailing list
&lt;br&gt;&lt;a href=&quot;http://lists.freebsd.org/mailman/listinfo/freebsd-vuxml&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://lists.freebsd.org/mailman/listinfo/freebsd-vuxml&lt;/a&gt;&lt;br&gt;To unsubscribe, send any mail to &amp;quot;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=7824175&amp;i=2&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;freebsd-vuxml-unsubscribe@...&lt;/a&gt;&amp;quot;
&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Re%3A-zope----restructuredText-%22csv_table%22-Information-Disclosure-tp7824175p7824175.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-6904448</id>
	<title>Re: zope -- restructuredText &quot;csv_table&quot; Information Disclosure</title>
	<published>2006-10-19T13:52:12Z</published>
	<updated>2006-10-19T13:52:12Z</updated>
	<author>
		<name>infofarmer</name>
	</author>
	<content type="html">On 10/19/06, TAOKA Fumiyoshi &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=6904448&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;fmysh@...&lt;/a&gt;&amp;gt; wrote:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; zope -- restructuredText &amp;quot;csv_table&amp;quot; Information Disclosure
&lt;br&gt;&amp;gt; &lt;a href=&quot;http://www.vuxml.org/freebsd/65a8f773-4a37-11db-a4cc-000a48049292.html&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.vuxml.org/freebsd/65a8f773-4a37-11db-a4cc-000a48049292.html&lt;/a&gt;&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; It is said that affected packages are zope &amp;gt;= 0 in the VuXML entry.
&lt;br&gt;&amp;gt; While referenced pages in the entry say that they are:
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; Zope 2.7.0 - 2.7.9
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; Zope 2.8.0 - 2.8.8
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; &lt;a href=&quot;http://www.securityfocus.com/bid/20022&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.securityfocus.com/bid/20022&lt;/a&gt;&lt;br&gt;&amp;gt; &lt;a href=&quot;http://www.vuxml.org/freebsd/CVE-2006-4684.html&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.vuxml.org/freebsd/CVE-2006-4684.html&lt;/a&gt;&lt;br&gt;&amp;gt; &lt;a href=&quot;http://secunia.com/advisories/21947/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://secunia.com/advisories/21947/&lt;/a&gt;&lt;br&gt;&amp;gt; &lt;a href=&quot;http://www.zope.org/Products/Zope/Hotfix-2006-08-21/Hotfix-20060821/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.zope.org/Products/Zope/Hotfix-2006-08-21/Hotfix-20060821/&lt;/a&gt;&lt;br&gt;&amp;gt; README.txt
&lt;/div&gt;&lt;br&gt;The vulnerability has been confirmed in these versions,
&lt;br&gt;but as far as we know there are no versions confirmed
&lt;br&gt;to be safe yet. To be on the safe side we never put an
&lt;br&gt;upper limit on version numbers until we know it for
&lt;br&gt;sure.
&lt;br&gt;&lt;br&gt;Thanks!
&lt;br&gt;_______________________________________________
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=6904448&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;freebsd-vuxml@...&lt;/a&gt; mailing list
&lt;br&gt;&lt;a href=&quot;http://lists.freebsd.org/mailman/listinfo/freebsd-vuxml&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://lists.freebsd.org/mailman/listinfo/freebsd-vuxml&lt;/a&gt;&lt;br&gt;To unsubscribe, send any mail to &amp;quot;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=6904448&amp;i=2&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;freebsd-vuxml-unsubscribe@...&lt;/a&gt;&amp;quot;
&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/zope----restructuredText-%22csv_table%22-Information-Disclosure-tp6903322p6904448.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-6903322</id>
	<title>zope -- restructuredText &quot;csv_table&quot; Information Disclosure</title>
	<published>2006-10-19T12:58:36Z</published>
	<updated>2006-10-19T12:58:36Z</updated>
	<author>
		<name>TAOKA Fumiyoshi</name>
	</author>
	<content type="html">zope -- restructuredText &amp;quot;csv_table&amp;quot; Information Disclosure
&lt;br&gt;&lt;a href=&quot;http://www.vuxml.org/freebsd/65a8f773-4a37-11db-a4cc-000a48049292.html&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.vuxml.org/freebsd/65a8f773-4a37-11db-a4cc-000a48049292.html&lt;/a&gt;&lt;br&gt;&lt;br&gt;It is said that affected packages are zope &amp;gt;= 0 in the VuXML entry.
&lt;br&gt;While referenced pages in the entry say that they are:
&lt;br&gt;&amp;nbsp; &amp;nbsp; Zope 2.7.0 - 2.7.9
&lt;br&gt;&amp;nbsp; &amp;nbsp; Zope 2.8.0 - 2.8.8
&lt;br&gt;&lt;br&gt;&lt;a href=&quot;http://www.securityfocus.com/bid/20022&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.securityfocus.com/bid/20022&lt;/a&gt;&lt;br&gt;&lt;a href=&quot;http://www.vuxml.org/freebsd/CVE-2006-4684.html&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.vuxml.org/freebsd/CVE-2006-4684.html&lt;/a&gt;&lt;br&gt;&lt;a href=&quot;http://secunia.com/advisories/21947/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://secunia.com/advisories/21947/&lt;/a&gt;&lt;br&gt;&lt;a href=&quot;http://www.zope.org/Products/Zope/Hotfix-2006-08-21/Hotfix-20060821/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.zope.org/Products/Zope/Hotfix-2006-08-21/Hotfix-20060821/&lt;/a&gt;&amp;nbsp;
&lt;br&gt;README.txt
&lt;br&gt;&lt;br&gt;&lt;br&gt;I hope this is useful.
&lt;br&gt;--
&lt;br&gt;TAOKA Fumiyoshi
&lt;br&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=6903322&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;freebsd-vuxml@...&lt;/a&gt; mailing list
&lt;br&gt;&lt;a href=&quot;http://lists.freebsd.org/mailman/listinfo/freebsd-vuxml&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://lists.freebsd.org/mailman/listinfo/freebsd-vuxml&lt;/a&gt;&lt;br&gt;To unsubscribe, send any mail to &amp;quot;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=6903322&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;freebsd-vuxml-unsubscribe@...&lt;/a&gt;&amp;quot;
&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/zope----restructuredText-%22csv_table%22-Information-Disclosure-tp6903322p6903322.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-6378879</id>
	<title>FreshPorts: vuxml | searching</title>
	<published>2006-09-18T16:37:04Z</published>
	<updated>2006-09-18T16:37:04Z</updated>
	<author>
		<name>Dan Langille</name>
	</author>
	<content type="html">[recently posted to ports@]
&lt;br&gt;&lt;br&gt;Gidday,
&lt;br&gt;&lt;br&gt;When creating a new vuxml entry, it can be difficult to get the 
&lt;br&gt;package name correct. &amp;nbsp; To help this process, I've created a page 
&lt;br&gt;that lists the vuxml entries and the packages they affect.
&lt;br&gt;&lt;br&gt;&amp;nbsp; &lt;a href=&quot;http://beta.freshports.org/vuxml.php?all&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://beta.freshports.org/vuxml.php?all&lt;/a&gt;&lt;br&gt;&lt;br&gt;By clicking on the links next to the vuln entry, you should be able 
&lt;br&gt;to spot any errors in the package names. &amp;nbsp;This is only on the BEA 
&lt;br&gt;site for now. &amp;nbsp;Hope this helps. &amp;nbsp;Please make suggestions.
&lt;br&gt;&lt;br&gt;In addition, you can search for ports by package name at 
&lt;br&gt;&lt;a href=&quot;http://www.freshports.org/search.php&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.freshports.org/search.php&lt;/a&gt;. &amp;nbsp;Indeed, you should be able to 
&lt;br&gt;search by just about any port field that can be grabbed via &amp;quot;make -
&lt;br&gt;V&amp;quot;. &amp;nbsp;If you don't see the search option listed that you would like, 
&lt;br&gt;please suggest it.
&lt;br&gt;&lt;br&gt;Note: Determining the package name for a port is not a science. &amp;nbsp;
&lt;br&gt;There will be false negatives because of this.
&lt;br&gt;&lt;br&gt;-- 
&lt;br&gt;Dan Langille : Software Developer looking for work
&lt;br&gt;my resume: &lt;a href=&quot;http://www.freebsddiary.org/dan_langille.php&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.freebsddiary.org/dan_langille.php&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=6378879&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;freebsd-vuxml@...&lt;/a&gt; mailing list
&lt;br&gt;&lt;a href=&quot;http://lists.freebsd.org/mailman/listinfo/freebsd-vuxml&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://lists.freebsd.org/mailman/listinfo/freebsd-vuxml&lt;/a&gt;&lt;br&gt;To unsubscribe, send any mail to &amp;quot;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=6378879&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;freebsd-vuxml-unsubscribe@...&lt;/a&gt;&amp;quot;
&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/FreshPorts%3A-vuxml-%7C-searching-tp6378879p6378879.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-5584794</id>
	<title>Re: correct versions for lang/ruby18?</title>
	<published>2006-07-31T15:53:25Z</published>
	<updated>2006-07-31T15:53:25Z</updated>
	<author>
		<name>Simon L. Nielsen</name>
	</author>
	<content type="html">On 2006.07.30 23:51:50 -0400, Dan Langille wrote:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; Are the versions for ruby18 specified correctly here?
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; &lt;a href=&quot;http://www.vuxml.org/freebsd/76562594-1f19-11db-b7d4-0008743bf21a.html&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.vuxml.org/freebsd/76562594-1f19-11db-b7d4-0008743bf21a.html&lt;/a&gt;&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; 1.6.*	&amp;lt;	ruby	&amp;lt;	1.8.*	
&lt;br&gt;&amp;gt; 1.8.*	&amp;lt;	ruby	&amp;lt;	1.8.4_9,1	
&lt;br&gt;&amp;gt; 1.6.*	&amp;lt;	ruby_static	&amp;lt;	1.8.*	
&lt;br&gt;&amp;gt; 1.8.*	&amp;lt;	ruby_static	&amp;lt;	1.8.4_9,1
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; Is that expected? &amp;nbsp;Doesn't 1.8.* mean 1.8.4_9,1 is also affected?
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; Perhaps 1.8.* should be 1.8
&lt;/div&gt;&lt;br&gt;That seems correct to me (it should better, I suggsted it ;-) ). &amp;nbsp;&amp;quot;*&amp;quot;
&lt;br&gt;means basically the smallest possible version and &amp;quot;less than&amp;quot; is used,
&lt;br&gt;not &amp;quot;less than equal&amp;quot;, so the above entries for 1.6 means any version
&lt;br&gt;larger than the smallest 1.6 and less than any 1.8 version.
&lt;br&gt;&lt;br&gt;Of cause the above really could be minimized to &amp;quot;ruby &amp;lt; 1.8.4_9,1&amp;quot; and
&lt;br&gt;drop the 1.6 entry. &amp;nbsp;The reason that wasn't done was to make it
&lt;br&gt;simpler to add fixed version info for 1.6 if that comes...
&lt;br&gt;&lt;br&gt;There is also the sidenote that since ruby 1.8.* above does not
&lt;br&gt;include epoch 1 (,1 in version) and ruby 1.8 is now at port epoch 1 it
&lt;br&gt;could never match, since &amp;quot;lowest_version,1 &amp;gt; higest_version&amp;quot;.
&lt;br&gt;&lt;br&gt;The reason for using .* is to catch any beta version etc. (frankly I'm
&lt;br&gt;not really sure right now if it's really an issue for ruby here but
&lt;br&gt;I'm a bit to tired to really double check). &amp;nbsp;You can see the problem
&lt;br&gt;here:
&lt;br&gt;&lt;br&gt;[simon@zaphod:~] pkg_version -t 1.8.0.p1 '1.8.*'
&lt;br&gt;&amp;gt;
&lt;br&gt;[simon@zaphod:~] pkg_version -t 1.8.0.p1 1.8
&lt;br&gt;&amp;lt;
&lt;br&gt;[simon@zaphod:~] pkg_version -t 1.8.0.p1 1.8.0
&lt;br&gt;&amp;lt;
&lt;br&gt;&lt;br&gt;Both portaudit and vxquery seems to agree that the entry is correct:
&lt;br&gt;&lt;br&gt;[simon@eddie:vuxml] portaudit -q 'ruby-1.8.4_9,1'
&lt;br&gt;[simon@eddie:vuxml] portaudit -q 'ruby-1.8.4_8,1'
&lt;br&gt;ruby-1.8.4_8,1
&lt;br&gt;[simon@eddie:vuxml] vxquery vuln.xml 'ruby-1.8.4_9,1'
&lt;br&gt;[simon@eddie:vuxml] vxquery vuln.xml 'ruby-1.8.4_8,1'
&lt;br&gt;Topic: ruby - multiple vulnerabilities
&lt;br&gt;Affects:
&lt;br&gt;&amp;nbsp; &amp;nbsp; 1.6.* &amp;lt; ruby &amp;lt; 1.8.*
&lt;br&gt;&amp;nbsp; &amp;nbsp; 1.8.* &amp;lt; ruby &amp;lt; 1.8.4_9,1
&lt;br&gt;&amp;nbsp; &amp;nbsp; 1.6.* &amp;lt; ruby_static &amp;lt; 1.8.*
&lt;br&gt;&amp;nbsp; &amp;nbsp; 1.8.* &amp;lt; ruby_static &amp;lt; 1.8.4_9,1
&lt;br&gt;References:
&lt;br&gt;&amp;nbsp; &amp;nbsp; bid:18944
&lt;br&gt;&amp;nbsp; &amp;nbsp; cvename:CVE-2006-3694
&lt;br&gt;&amp;nbsp; &amp;nbsp; url:&lt;a href=&quot;http://secunia.com/advisories/21009/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://secunia.com/advisories/21009/&lt;/a&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; url:&lt;a href=&quot;http://jvn.jp/jp/JVN%2383768862/index.html&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://jvn.jp/jp/JVN%2383768862/index.html&lt;/a&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; url:&lt;a href=&quot;http://jvn.jp/jp/JVN%2313947696/index.html&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://jvn.jp/jp/JVN%2313947696/index.html&lt;/a&gt;&lt;br&gt;&amp;lt;URL:&lt;a href=&quot;http://vuxml.freebsd.org/76562594-1f19-11db-b7d4-0008743bf21a.html&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://vuxml.freebsd.org/76562594-1f19-11db-b7d4-0008743bf21a.html&lt;/a&gt;&amp;gt;
&lt;br&gt;&lt;br&gt;-- 
&lt;br&gt;Simon L. Nielsen
&lt;br&gt;_______________________________________________
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=5584794&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;freebsd-vuxml@...&lt;/a&gt; mailing list
&lt;br&gt;&lt;a href=&quot;http://lists.freebsd.org/mailman/listinfo/freebsd-vuxml&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://lists.freebsd.org/mailman/listinfo/freebsd-vuxml&lt;/a&gt;&lt;br&gt;To unsubscribe, send any mail to &amp;quot;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=5584794&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;freebsd-vuxml-unsubscribe@...&lt;/a&gt;&amp;quot;
&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/correct-versions-for-lang-ruby18--tp5569778p5584794.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-5569778</id>
	<title>correct versions for lang/ruby18?</title>
	<published>2006-07-30T21:51:50Z</published>
	<updated>2006-07-30T21:51:50Z</updated>
	<author>
		<name>Dan Langille</name>
	</author>
	<content type="html">Are the versions for ruby18 specified correctly here?
&lt;br&gt;&lt;br&gt;&lt;a href=&quot;http://www.vuxml.org/freebsd/76562594-1f19-11db-b7d4-&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.vuxml.org/freebsd/76562594-1f19-11db-b7d4-&lt;/a&gt;&lt;br&gt;0008743bf21a.html
&lt;br&gt;&lt;br&gt;1.6.*	&amp;lt;	ruby	&amp;lt;	1.8.*	
&lt;br&gt;1.8.*	&amp;lt;	ruby	&amp;lt;	1.8.4_9,1	
&lt;br&gt;1.6.*	&amp;lt;	ruby_static	&amp;lt;	1.8.*	
&lt;br&gt;1.8.*	&amp;lt;	ruby_static	&amp;lt;	1.8.4_9,1
&lt;br&gt;&lt;br&gt;Is that expected? &amp;nbsp;Doesn't 1.8.* mean 1.8.4_9,1 is also affected?
&lt;br&gt;&lt;br&gt;Perhaps 1.8.* should be 1.8
&lt;br&gt;&lt;br&gt;-- 
&lt;br&gt;Dan Langille : Software Developer looking for work
&lt;br&gt;my resume: &lt;a href=&quot;http://www.freebsddiary.org/dan_langille.php&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.freebsddiary.org/dan_langille.php&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=5569778&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;freebsd-vuxml@...&lt;/a&gt; mailing list
&lt;br&gt;&lt;a href=&quot;http://lists.freebsd.org/mailman/listinfo/freebsd-vuxml&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://lists.freebsd.org/mailman/listinfo/freebsd-vuxml&lt;/a&gt;&lt;br&gt;To unsubscribe, send any mail to &amp;quot;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=5569778&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;freebsd-vuxml-unsubscribe@...&lt;/a&gt;&amp;quot;
&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/correct-versions-for-lang-ruby18--tp5569778p5569778.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-3703208</id>
	<title>Re: mantis problems fixed</title>
	<published>2006-04-01T04:20:24Z</published>
	<updated>2006-04-01T04:20:24Z</updated>
	<author>
		<name>Dan Langille</name>
	</author>
	<content type="html">On 31 Mar 2006 at 23:05, Dan Langille wrote:
&lt;br&gt;&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; Hi folks,
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; I've been finding out that a couple of mantis-related problems 
&lt;br&gt;&amp;gt; have been fixed:
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; &lt;a href=&quot;http://www.freebsd.org/ports/portaudit/82a41084-6ce7-11da-b90c-&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.freebsd.org/ports/portaudit/82a41084-6ce7-11da-b90c-&lt;/a&gt;&lt;br&gt;&amp;gt; 000e0c2e438a.html
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; has been fixed here:
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; &lt;a href=&quot;http://cvs.sourceforge.net/viewcvs.py/mantisbt/mantisbt/bug_sponsorshi&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://cvs.sourceforge.net/viewcvs.py/mantisbt/mantisbt/bug_sponsorshi&lt;/a&gt;&lt;br&gt;&amp;gt; p_list_view_inc.php?rev=1.13&amp;view=log
&lt;br&gt;&amp;gt; Fixed #6273: File Inclusion Vulnerability
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; And: &amp;nbsp;&lt;a href=&quot;http://www.FreeBSD.org/ports/portaudit/6e3b12e2-6ce3-11da-b90c-&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.FreeBSD.org/ports/portaudit/6e3b12e2-6ce3-11da-b90c-&lt;/a&gt;&lt;br&gt;&amp;gt; 000e0c2e438a.html
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; is here: 
&lt;br&gt;&amp;gt; &lt;a href=&quot;http://cvs.sourceforge.net/viewcvs.py/mantisbt/mantisbt/core/filter_ap&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://cvs.sourceforge.net/viewcvs.py/mantisbt/mantisbt/core/filter_ap&lt;/a&gt;&lt;br&gt;&amp;gt; i.php?rev=1.138&amp;view=log
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; fix for 0006436: code injection
&lt;br&gt;&amp;gt; &amp;nbsp; - fixed 1 possible code injection and 2 XSS injections
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; Could someone update the vuxml db please? &amp;nbsp;I'd like to 
&lt;br&gt;&amp;gt; put mantis back into the tree.
&lt;/div&gt;&lt;br&gt;This just came to hand:
&lt;br&gt;&lt;br&gt;&lt;a href=&quot;http://www.frsirt.com/english/advisories/2006/1184&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.frsirt.com/english/advisories/2006/1184&lt;/a&gt;&lt;br&gt;&lt;br&gt;-- 
&lt;br&gt;Dan Langille : Software Developer looking for work
&lt;br&gt;my resume: &lt;a href=&quot;http://www.freebsddiary.org/dan_langille.php&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.freebsddiary.org/dan_langille.php&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=3703208&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;freebsd-vuxml@...&lt;/a&gt; mailing list
&lt;br&gt;&lt;a href=&quot;http://lists.freebsd.org/mailman/listinfo/freebsd-vuxml&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://lists.freebsd.org/mailman/listinfo/freebsd-vuxml&lt;/a&gt;&lt;br&gt;To unsubscribe, send any mail to &amp;quot;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=3703208&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;freebsd-vuxml-unsubscribe@...&lt;/a&gt;&amp;quot;
&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/mantis-problems-fixed-tp3700485p3703208.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-3700485</id>
	<title>mantis problems fixed</title>
	<published>2006-03-31T20:05:59Z</published>
	<updated>2006-03-31T20:05:59Z</updated>
	<author>
		<name>Dan Langille</name>
	</author>
	<content type="html">Hi folks,
&lt;br&gt;&lt;br&gt;I've been finding out that a couple of mantis-related problems 
&lt;br&gt;have been fixed:
&lt;br&gt;&lt;br&gt;&lt;a href=&quot;http://www.freebsd.org/ports/portaudit/82a41084-6ce7-11da-b90c-&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.freebsd.org/ports/portaudit/82a41084-6ce7-11da-b90c-&lt;/a&gt;&lt;br&gt;000e0c2e438a.html
&lt;br&gt;&lt;br&gt;has been fixed here:
&lt;br&gt;&lt;br&gt;&lt;a href=&quot;http://cvs.sourceforge.net/viewcvs.py/mantisbt/mantisbt/bug_sponsorshi&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://cvs.sourceforge.net/viewcvs.py/mantisbt/mantisbt/bug_sponsorshi&lt;/a&gt;&lt;br&gt;p_list_view_inc.php?rev=1.13&amp;view=log
&lt;br&gt;Fixed #6273: File Inclusion Vulnerability
&lt;br&gt;&lt;br&gt;&lt;br&gt;And: &amp;nbsp;&lt;a href=&quot;http://www.FreeBSD.org/ports/portaudit/6e3b12e2-6ce3-11da-b90c-&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.FreeBSD.org/ports/portaudit/6e3b12e2-6ce3-11da-b90c-&lt;/a&gt;&lt;br&gt;000e0c2e438a.html
&lt;br&gt;&lt;br&gt;is here: 
&lt;br&gt;&lt;a href=&quot;http://cvs.sourceforge.net/viewcvs.py/mantisbt/mantisbt/core/filter_ap&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://cvs.sourceforge.net/viewcvs.py/mantisbt/mantisbt/core/filter_ap&lt;/a&gt;&lt;br&gt;i.php?rev=1.138&amp;view=log
&lt;br&gt;&lt;br&gt;fix for 0006436: code injection
&lt;br&gt;&amp;nbsp; - fixed 1 possible code injection and 2 XSS injections
&lt;br&gt;&lt;br&gt;Could someone update the vuxml db please? &amp;nbsp;I'd like to 
&lt;br&gt;put mantis back into the tree.
&lt;br&gt;&lt;br&gt;-- 
&lt;br&gt;Dan Langille : Software Developer looking for work
&lt;br&gt;my resume: &lt;a href=&quot;http://www.freebsddiary.org/dan_langille.php&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.freebsddiary.org/dan_langille.php&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=3700485&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;freebsd-vuxml@...&lt;/a&gt; mailing list
&lt;br&gt;&lt;a href=&quot;http://lists.freebsd.org/mailman/listinfo/freebsd-vuxml&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://lists.freebsd.org/mailman/listinfo/freebsd-vuxml&lt;/a&gt;&lt;br&gt;To unsubscribe, send any mail to &amp;quot;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=3700485&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;freebsd-vuxml-unsubscribe@...&lt;/a&gt;&amp;quot;
&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/mantis-problems-fixed-tp3700485p3700485.html" />
</entry>

</feed>
