further implementation of new CUESHEET metadata block
diff --git a/src/libFLAC/stream_encoder.c b/src/libFLAC/stream_encoder.c
index 9275ce2..40b44b5 100644
--- a/src/libFLAC/stream_encoder.c
+++ b/src/libFLAC/stream_encoder.c
@@ -659,7 +659,9 @@
 	metadata_has_seektable = false;
 	metadata_has_vorbis_comment = false;
 	for(i = 0; i < encoder->protected_->num_metadata_blocks; i++) {
-		if(encoder->protected_->metadata[i]->type == FLAC__METADATA_TYPE_STREAMINFO)
+		if(encoder->protected_->metadata[i]->type >= FLAC__METADATA_TYPE_UNDEFINED)
+			return encoder->protected_->state = FLAC__STREAM_ENCODER_INVALID_METADATA;
+		else if(encoder->protected_->metadata[i]->type == FLAC__METADATA_TYPE_STREAMINFO)
 			return encoder->protected_->state = FLAC__STREAM_ENCODER_INVALID_METADATA;
 		else if(encoder->protected_->metadata[i]->type == FLAC__METADATA_TYPE_SEEKTABLE) {
 			if(metadata_has_seektable) /* only one is allowed */
@@ -673,6 +675,10 @@
 				return encoder->protected_->state = FLAC__STREAM_ENCODER_INVALID_METADATA;
 			metadata_has_vorbis_comment = true;
 		}
+		else if(encoder->protected_->metadata[i]->type == FLAC__METADATA_TYPE_CUESHEET) {
+			if(!FLAC__format_cuesheet_is_legal(&encoder->protected_->metadata[i]->data.cue_sheet, /*check_cd_da_subset=*/false, /*violation=*/0))
+				return encoder->protected_->state = FLAC__STREAM_ENCODER_INVALID_METADATA;
+		}
 	}
 
 	encoder->private_->input_capacity = 0;