[Slim-Checkins] r10226 - /branches/6.5/server/lib/Audio/WMA.pm

andy at svn.slimdevices.com andy at svn.slimdevices.com
Thu Oct 5 19:15:25 PDT 2006


Author: andy
Date: Thu Oct  5 19:15:24 2006
New Revision: 10226

URL: http://svn.slimdevices.com?rev=10226&view=rev
Log:
Bug 4302, this ASF stream had bogus streamNameCount and payloadExtensionCount values, work around this by not looping if we run out of data

Modified:
    branches/6.5/server/lib/Audio/WMA.pm

Modified: branches/6.5/server/lib/Audio/WMA.pm
URL: http://svn.slimdevices.com/branches/6.5/server/lib/Audio/WMA.pm?rev=10226&r1=10225&r2=10226&view=diff
==============================================================================
--- branches/6.5/server/lib/Audio/WMA.pm (original)
+++ branches/6.5/server/lib/Audio/WMA.pm Thu Oct  5 19:15:24 2006
@@ -642,8 +642,8 @@
 	);
 
 	for (my $s = 0; $s < $ext{'streamNameCount'}; $s++) {
-
-		my $language = unpack('v', $self->_readAndIncrementInlineOffset($WORD));
+		
+		my $language = unpack('v', $self->_readAndIncrementInlineOffset($WORD)) || last;
 		my $length   = unpack('v', $self->_readAndIncrementInlineOffset($WORD));
 
 		$self->_readAndIncrementInlineOffset($length);
@@ -651,8 +651,8 @@
 	}
 
 	for (my $p = 0; $p < $ext{'payloadExtensionCount'}; $p++) {
-
-		$self->_readAndIncrementInlineOffset(18);
+		
+		$self->_readAndIncrementInlineOffset(18) || last;
 		my $length = unpack('V', $self->_readAndIncrementInlineOffset($DWORD));
 
 		$self->_readAndIncrementInlineOffset($length);
@@ -1118,6 +1118,8 @@
 	my @byteString	= split //, shift;
 
 	my $guidString;
+	
+	return unless @byteString;
 
 	# this reverses _guidToByteString.
 	$guidString  = sprintf("%02X", ord($byteString[3]));



More information about the checkins mailing list