[40497] trunk/dports/perl/p5-mac-applesingledouble
ricci at macports.org
ricci at macports.org
Fri Oct 3 13:42:27 PDT 2008
Revision: 40497
http://trac.macports.org/changeset/40497
Author: ricci at macports.org
Date: 2008-10-03 13:42:25 -0700 (Fri, 03 Oct 2008)
Log Message:
-----------
add patch to add length checks around the unpack(..., substr(....)) calls so it
doesn't toss errors due to the string being too short fo the substr() calls
Modified Paths:
--------------
trunk/dports/perl/p5-mac-applesingledouble/Portfile
Added Paths:
-----------
trunk/dports/perl/p5-mac-applesingledouble/files/
trunk/dports/perl/p5-mac-applesingledouble/files/patch-lib-Mac-AppleSingleDouble.pm.diff
Modified: trunk/dports/perl/p5-mac-applesingledouble/Portfile
===================================================================
--- trunk/dports/perl/p5-mac-applesingledouble/Portfile 2008-10-03 19:53:04 UTC (rev 40496)
+++ trunk/dports/perl/p5-mac-applesingledouble/Portfile 2008-10-03 20:42:25 UTC (rev 40497)
@@ -3,7 +3,7 @@
PortSystem 1.0
PortGroup perl5 1.0
perl5.setup Mac-AppleSingleDouble 1.0
-revision 0
+revision 1
maintainers ricci
description Read Mac files in AppleSingle or AppleDouble format
long_description \
@@ -15,3 +15,6 @@
checksums md5 96343f4314905602f96e379baa25996f
+patchfiles patch-lib-Mac-AppleSingleDouble.pm.diff
+
+
Added: trunk/dports/perl/p5-mac-applesingledouble/files/patch-lib-Mac-AppleSingleDouble.pm.diff
===================================================================
--- trunk/dports/perl/p5-mac-applesingledouble/files/patch-lib-Mac-AppleSingleDouble.pm.diff (rev 0)
+++ trunk/dports/perl/p5-mac-applesingledouble/files/patch-lib-Mac-AppleSingleDouble.pm.diff 2008-10-03 20:42:25 UTC (rev 40497)
@@ -0,0 +1,113 @@
+--- lib/Mac/AppleSingleDouble.pm.orig 2001-09-29 16:06:42.000000000 -0700
++++ lib/Mac/AppleSingleDouble.pm 2008-10-03 13:35:35.000000000 -0700
+@@ -345,45 +345,71 @@
+
+ sub _parse_finder_info
+ {
+- my $this = shift;
+- my $finderinfo_raw = shift;
+- my(%finderinfo);
+-
+- # based on page 7-76 of Inside Macintosh: Finder Interface
+- $finderinfo{'Type'} = substr($finderinfo_raw, 0, 4);
+- $finderinfo{'Creator'} = substr($finderinfo_raw, 4, 4);
+- $finderinfo{'Flags'} = unpack('n', substr($finderinfo_raw, 8, 2));
+- $finderinfo{'Location'} = unpack('nn', substr($finderinfo_raw, 10, 4));
+- $finderinfo{'Fldr'} = unpack('n', substr($finderinfo_raw, 14, 2));
+-
+- # Finder Flags
+- $flagbits = unpack('B8', substr($finderinfo_raw, 8, 1)) .unpack('B8', substr($finderinfo_raw, 9, 1)) ;
+- #print "flagbits is $flagbits\n";
+- $finderinfo{'Label'} = unpack('C', pack('B8', '0'x5 . substr($flagbits, 12, 3)));
+- $finderinfo{'Color'} = $finderinfo{'Label'};
+- $finderinfo{'IsOnDesk'} = substr($flagbits, 15, 1);
+- $finderinfo{'IsShared'} = substr($flagbits, 9, 1);
+- $finderinfo{'HasBeenInited'} = substr($flagbits, 7, 1);
+- $finderinfo{'HasCustomIcon'} = substr($flagbits, 5, 1);
+- $finderinfo{'IsStationery'} = substr($flagbits, 4, 1);
+- $finderinfo{'NameLocked'} = substr($flagbits, 3, 1);
+- $finderinfo{'HasBundle'} = substr($flagbits, 2, 1);
+- $finderinfo{'IsInvisible'} = substr($flagbits, 1, 1);
+- $finderinfo{'IsAlias'} = substr($flagbits, 0, 1);
+-
+- # Extended Finder Info
+- $finderinfo{'IconID'} = unpack('n', substr($finderinfo_raw, 16, 2));
+- $finderinfo{'Script'} = unpack('c', substr($finderinfo_raw, 24, 1));
+- $finderinfo{'XFlags'} = unpack('B8', substr($finderinfo_raw, 25, 1));
+- $finderinfo{'Comment'} = unpack('n', substr($finderinfo_raw, 26, 2));
+- $finderinfo{'PutAway'} = unpack('N', substr($finderinfo_raw, 28, 4));
+-
+- my $labelcolor = $this->{'_labelcolors'}->{$finderinfo{'Label'}};
+- my $labelname = $this->{'_labelnames'}->{$finderinfo{'Label'}};
+- $finderinfo{'LabelColor'} = defined($labelcolor)? $labelcolor : '(no labelcolor provided)';
+- $finderinfo{'LabelName'} = defined($labelname)? $labelname : '(no labelname provided)';
+-
+- $this->{'_finder_info'} = \%finderinfo;
++ my $this = shift;
++ my $finderinfo_raw = shift;
++ my(%finderinfo);
++ my $finderInfoRawLen = undef;
++
++ if (!defined($finderinfo_raw) || "" eq $finderinfo_raw) {
++ $this->{'_finder_info'} = \%finderinfo;
++ return;
++ }
++ $finderInfoRawLen = length $finderinfo_raw;
++
++ # based on page 7-76 of Inside Macintosh: Finder Interface
++ $finderinfo{'Type'} = substr($finderinfo_raw, 0, 4);
++ if ($finderInfoRawLen >= 4) {
++ $finderinfo{'Creator'} = substr($finderinfo_raw, 4, 4);
++ }
++ if ($finderInfoRawLen >= 8) {
++ $finderinfo{'Flags'} = unpack('n', substr($finderinfo_raw, 8, 2));
++ }
++ if ($finderInfoRawLen >= 9) {
++ # Finder Flags
++ $flagbits = unpack('B8', substr($finderinfo_raw, 8, 1)) .unpack('B8', substr($finderinfo_raw, 9, 1)) ;
++ #print "flagbits is $flagbits\n";
++ $finderinfo{'Label'} = unpack('C', pack('B8', '0'x5 . substr($flagbits, 12, 3)));
++ $finderinfo{'Color'} = $finderinfo{'Label'};
++ $finderinfo{'IsOnDesk'} = substr($flagbits, 15, 1);
++ $finderinfo{'IsShared'} = substr($flagbits, 9, 1);
++ $finderinfo{'HasBeenInited'} = substr($flagbits, 7, 1);
++ $finderinfo{'HasCustomIcon'} = substr($flagbits, 5, 1);
++ $finderinfo{'IsStationery'} = substr($flagbits, 4, 1);
++ $finderinfo{'NameLocked'} = substr($flagbits, 3, 1);
++ $finderinfo{'HasBundle'} = substr($flagbits, 2, 1);
++ $finderinfo{'IsInvisible'} = substr($flagbits, 1, 1);
++ $finderinfo{'IsAlias'} = substr($flagbits, 0, 1);
++ }
++ if ($finderInfoRawLen >= 10) {
++ $finderinfo{'Location'} = unpack('nn', substr($finderinfo_raw, 10, 4));
++ }
++ if ($finderInfoRawLen >= 14) {
++ $finderinfo{'Fldr'} = unpack('n', substr($finderinfo_raw, 14, 2));
++ }
++
++ # Extended Finder Info
++ if ($finderInfoRawLen >= 16) {
++ $finderinfo{'IconID'} = unpack('n', substr($finderinfo_raw, 16, 2));
++ }
++ if ($finderInfoRawLen >= 24) {
++ $finderinfo{'Script'} = unpack('c', substr($finderinfo_raw, 24, 1));
++ }
++ if ($finderInfoRawLen >= 25) {
++ $finderinfo{'XFlags'} = unpack('B8', substr($finderinfo_raw, 25, 1));
++ }
++ if ($finderInfoRawLen >= 26) {
++ $finderinfo{'Comment'} = unpack('n', substr($finderinfo_raw, 26, 2));
++ }
++ if ($finderInfoRawLen >= 28) {
++ $finderinfo{'PutAway'} = unpack('N', substr($finderinfo_raw, 28, 4));
++ }
++
++ my $labelcolor = $this->{'_labelcolors'}->{$finderinfo{'Label'}};
++ my $labelname = $this->{'_labelnames'}->{$finderinfo{'Label'}};
++ $finderinfo{'LabelColor'} = defined($labelcolor)? $labelcolor : '(no labelcolor provided)';
++ $finderinfo{'LabelName'} = defined($labelname)? $labelname : '(no labelname provided)';
++
++ $this->{'_finder_info'} = \%finderinfo;
+ }
+
+ sub _get_entry_from_file
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.macosforge.org/pipermail/macports-changes/attachments/20081003/440ce014/attachment.html
More information about the macports-changes
mailing list