2
0
Эх сурвалжийг харах

Merge pull request #87246 from bs-mwoerner/ogg_crash

Fix a possible crash when importing an OGG file with zero-length packets
Rémi Verschelde 1 жил өмнө
parent
commit
9705ac40c9

+ 8 - 6
modules/vorbis/resource_importer_ogg_vorbis.cpp

@@ -212,11 +212,13 @@ Ref<AudioStreamOggVorbis> ResourceImporterOggVorbis::load_from_buffer(const Vect
 				granule_pos = packet.granulepos;
 			}
 
-			PackedByteArray data;
-			data.resize(packet.bytes);
-			memcpy(data.ptrw(), packet.packet, packet.bytes);
-			sorted_packets[granule_pos].push_back(data);
-			packet_count++;
+			if (packet.bytes > 0) {
+				PackedByteArray data;
+				data.resize(packet.bytes);
+				memcpy(data.ptrw(), packet.packet, packet.bytes);
+				sorted_packets[granule_pos].push_back(data);
+				packet_count++;
+			}
 		}
 		Vector<Vector<uint8_t>> packet_data;
 		for (const KeyValue<uint64_t, Vector<Vector<uint8_t>>> &pair : sorted_packets) {
@@ -224,7 +226,7 @@ Ref<AudioStreamOggVorbis> ResourceImporterOggVorbis::load_from_buffer(const Vect
 				packet_data.push_back(packets);
 			}
 		}
-		if (initialized_stream) {
+		if (initialized_stream && packet_data.size() > 0) {
 			ogg_packet_sequence->push_page(ogg_page_granulepos(&page), packet_data);
 		}
 	}