[Slim-Checkins] r10227 - /trunk/server/lib/Audio/WMA.pm

andy at svn.slimdevices.com andy at svn.slimdevices.com
Thu Oct 5 19:16:13 PDT 2006


Author: andy
Date: Thu Oct  5 19:16:12 2006
New Revision: 10227

URL: http://svn.slimdevices.com?rev=10227&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:
    trunk/server/lib/Audio/WMA.pm

Modified: trunk/server/lib/Audio/WMA.pm
URL: http://svn.slimdevices.com/trunk/server/lib/Audio/WMA.pm?rev=10227&r1=10226&r2=10227&view=diff
==============================================================================
--- trunk/server/lib/Audio/WMA.pm (original)
+++ trunk/server/lib/Audio/WMA.pm Thu Oct  5 19:16:12 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