[FIX][3.2][3.4a] ArchiveFixes2-nk

Doug Way dway at riskmetrics.com
Fri Dec 13 05:53:44 UTC 2002


On Tuesday, November 12, 2002, at 10:38 PM, Ned Konz wrote:

> from preamble:
>
> "Change Set:		ArchiveFixes2-nk
> Date:			12 November 2002
> Author:			Ned Konz
>
> This fixes zip archive extraction so that:
>
> - directories are created as needed
> - zip members with absolute path names or '..' portions have their 
> names
> cleaned up so they don't cause security problems when extracted
>
> This will allow (for instance) Connectors to install properly from
> SqueakMap.
>
> I will include the appropriate methods with a new version of the
> SARInstaller code on SqueakMap.
> "!
>
> <ArchiveFixes2-nk.cs.gz>

Okay, I tested this tonight with a vanilla 3.4b-5147 image (without 
SqueakMap installed), under Mac OS X (10.2.2).

With it installed, I opened a .zip file which contains files under 
subdirectories in the ArchiveViewer, and tried "Extract All".  I ran 
into an infinite loop problem... the stack is attached.  The problem 
seems to be that FileDirectory>>assureExistenceOfPath: calls "self 
containingDirectory assureExistenceOfPath: ..." and both the current 
directory and containingDirectory pathNames are empty strings.

(The .zip file I tried is is Connectors1.6.sar.  The same problem 
happens if I try to install Connectors 1.8 directly from SqueakMap.)

Unfortunately, using the ArchiveViewer to save archives which contain 
files in subdirectories doesn't seem to work on OS X, either.  Although 
it didn't work before this fix, anyway.  I may try the same tests on a 
Win2000 machine tomorrow to make sure things are working on that 
platform.

- Doug Way


13 December 2002 12:45:55 am

VM: Mac OS - Squeak3.2gamma of 15 January 2002 [latest update: #4913] 
Squeak VM 3.2.8b9
Image: Squeak3.4beta [latest update: #5147]

Array(Object)>>~=
	Receiver: #('The Monolith' 3153063827 3217193095 true 0)
	Arguments and temporary variables:
		anObject: 	#badDirectoryPath
	Receiver's instance variables:
#('The Monolith' 3153063827 3217193095 true 0)

MacHFSPlusFileDirectory(FileDirectory)>>exists
	Receiver: MacHFSPlusFileDirectory on ''
	Arguments and temporary variables:
		result: 	#('The Monolith' 3153063827 3217193095 true 0)
	Receiver's instance variables:
		pathName: 	''

MacHFSPlusFileDirectory(FileDirectory)>>directoryExists:
	Receiver: MacHFSPlusFileDirectory on ''
	Arguments and temporary variables:
		filenameOrPath: 	''
		fName: 	''
		dir: 	MacHFSPlusFileDirectory on ''
		filePath: 	''
		name: 	''
	Receiver's instance variables:
		pathName: 	''

MacHFSPlusFileDirectory(FileDirectory)>>assureExistenceOfPath:
	Receiver: MacHFSPlusFileDirectory on ''
	Arguments and temporary variables:
		localPath: 	''
	Receiver's instance variables:
		pathName: 	''


--- The full stack ---
Array(Object)>>~=
MacHFSPlusFileDirectory(FileDirectory)>>exists
MacHFSPlusFileDirectory(FileDirectory)>>directoryExists:
MacHFSPlusFileDirectory(FileDirectory)>>assureExistenceOfPath:
  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
MacHFSPlusFileDirectory(FileDirectory)>>assureExistenceOfPath:
MacHFSPlusFileDirectory(FileDirectory)>>assureExistenceOfPath:
MacHFSPlusFileDirectory(FileDirectory)>>assureExistenceOfPath:
MacHFSPlusFileDirectory(FileDirectory)>>assureExistenceOfPath:
MacHFSPlusFileDirectory(FileDirectory)>>assureExistenceOfPath:
MacHFSPlusFileDirectory(FileDirectory)>>assureExistenceOfPath:
MacHFSPlusFileDirectory(FileDirectory)>>assureExistenceOfPath:
MacHFSPlusFileDirectory(FileDirectory)>>assureExistenceOfPath:
MacHFSPlusFileDirectory(FileDirectory)>>assureExistenceOfPath:
MacHFSPlusFileDirectory(FileDirectory)>>assureExistenceOfPath:
MacHFSPlusFileDirectory(FileDirectory)>>assureExistenceOfPath:
MacHFSPlusFileDirectory(FileDirectory)>>assureExistenceOfPath:
MacHFSPlusFileDirectory(FileDirectory)>>assureExistenceOfPath:
MacHFSPlusFileDirectory(FileDirectory)>>assureExistenceOfPath:
MacHFSPlusFileDirectory(FileDirectory)>>assureExistenceOfPath:
MacHFSPlusFileDirectory(FileDirectory)>>assureExistenceOfPath:
MacHFSPlusFileDirectory(FileDirectory)>>assureExistenceOfPath:
MacHFSPlusFileDirectory(FileDirectory)>>assureExistenceOfPath:
MacHFSPlusFileDirectory(FileDirectory)>>assureExistenceOfPath:
MacHFSPlusFileDirectory(FileDirectory)>>assureExistenceOfPath:
MacHFSPlusFileDirectory(FileDirectory)>>assureExistenceOfPath:
MacHFSPlusFileDirectory(FileDirectory)>>assureExistenceOfPath:
MacHFSPlusFileDirectory(FileDirectory)>>assureExistenceOfPath:
MacHFSPlusFileDirectory(FileDirectory)>>assureExistenceOfPath:
MacHFSPlusFileDirectory(FileDirectory)>>assureExistenceOfPath:
MacHFSPlusFileDirectory(FileDirectory)>>assureExistenceOfPath:
MacHFSPlusFileDirectory(FileDirectory)>>assureExistenceOfPath:
MacHFSPlusFileDirectory(FileDirectory)>>assureExistenceOfPath:
MacHFSPlusFileDirectory(FileDirectory)>>assureExistenceOfPath:
MacHFSPlusFileDirectory(FileDirectory)>>assureExistenceOfPath:
MacHFSPlusFileDirectory(FileDirectory)>>assureExistenceOfPath:
MacHFSPlusFileDirectory(FileDirectory)>>assureExistenceOfPath:
MacHFSPlusFileDirectory(FileDirectory)>>assureExistenceOfPath:
MacHFSPlusFileDirectory(FileDirectory)>>assureExistenceOfPath:
MacHFSPlusFileDirectory(FileDirectory)>>assureExistenceOfPath:
MacHFSPlusFileDirectory(FileDirectory)>>assureExistenceOfPath:
MacHFSPlusFileDirectory(FileDirectory)>>assureExistenceOfPath:
MacHFSPlusFileDirectory(FileDirectory)>>assureExistenceOfPath:
MacHFSPlusFileDirectory(FileDirectory)>>assureExistenceOfPath:
MacHFSPlusFileDirectory(FileDirectory)>>assureExistenceOfPath:
MacHFSPlusFileDirectory(FileDirectory)>>assureExistenceOfPath:
MacHFSPlusFileDirectory(FileDirectory)>>assureExistenceOfPath:
MacHFSPlusFileDirectory(FileDirectory)>>assureExistenceOfPath:
MacHFSPlusFileDirectory(FileDirectory)>>assureExistenceOfPath:
MacHFSPlusFileDirectory(FileDirectory)>>assureExistenceOfPath:
...etc...




More information about the Squeak-dev mailing list