1
0
mirror of https://github.com/godotengine/godot.git synced 2025-11-09 12:50:35 +00:00

Merge pull request #21220 from Noshyaar/import-crash

Fix crash while importing corrupt wav
This commit is contained in:
Rémi Verschelde
2018-08-21 00:10:06 +02:00
committed by GitHub
2 changed files with 15 additions and 11 deletions

View File

@@ -157,15 +157,18 @@ Error ResourceImporterWAV::import(const String &p_source_file, const String &p_s
//Consider revision for engine version 3.0 //Consider revision for engine version 3.0
compression_code = file->get_16(); compression_code = file->get_16();
if (compression_code != 1 && compression_code != 3) { if (compression_code != 1 && compression_code != 3) {
ERR_PRINT("Format not supported for WAVE file (not PCM). Save WAVE files as uncompressed PCM instead."); file->close();
break; memdelete(file);
ERR_EXPLAIN("Format not supported for WAVE file (not PCM). Save WAVE files as uncompressed PCM instead.");
ERR_FAIL_V(ERR_INVALID_DATA);
} }
format_channels = file->get_16(); format_channels = file->get_16();
if (format_channels != 1 && format_channels != 2) { if (format_channels != 1 && format_channels != 2) {
file->close();
ERR_PRINT("Format not supported for WAVE file (not stereo or mono)"); memdelete(file);
break; ERR_EXPLAIN("Format not supported for WAVE file (not stereo or mono).");
ERR_FAIL_V(ERR_INVALID_DATA);
} }
format_freq = file->get_32(); //sampling rate format_freq = file->get_32(); //sampling rate
@@ -174,10 +177,11 @@ Error ResourceImporterWAV::import(const String &p_source_file, const String &p_s
file->get_16(); // block align (unused) file->get_16(); // block align (unused)
format_bits = file->get_16(); // bits per sample format_bits = file->get_16(); // bits per sample
if (format_bits % 8) { if (format_bits % 8 || format_bits == 0) {
file->close();
ERR_PRINT("Strange number of bits in sample (not 8,16,24,32)"); memdelete(file);
break; ERR_EXPLAIN("Invalid amount of bits in the sample (should be one of 8, 16, 24 or 32).");
ERR_FAIL_V(ERR_INVALID_DATA);
} }
/* Don't need anything else, continue */ /* Don't need anything else, continue */
@@ -185,7 +189,7 @@ Error ResourceImporterWAV::import(const String &p_source_file, const String &p_s
} }
if (chunkID[0] == 'd' && chunkID[1] == 'a' && chunkID[2] == 't' && chunkID[3] == 'a' && !data_found) { if (chunkID[0] == 'd' && chunkID[1] == 'a' && chunkID[2] == 't' && chunkID[3] == 'a' && !data_found) {
/* IS FORMAT CHUNK */ /* IS DATA CHUNK */
data_found = true; data_found = true;
if (!format_found) { if (!format_found) {

View File

@@ -233,7 +233,7 @@ Ref<AudioStreamSample> AudioEffectRecord::get_recording() const {
w[i * 2 + 1] = rr[i]; w[i * 2 + 1] = rr[i];
} }
} else { } else {
ERR_EXPLAIN("format not implemented"); ERR_PRINT("Format not implemented.");
} }
Ref<AudioStreamSample> sample; Ref<AudioStreamSample> sample;