@@ -213,7 +213,7 @@ ModulemdYamlDocumentTypeEnum2string (ModulemdYamlDocumentTypeEnum type)
213213 * subdocuments. We will use private modulemd_defaults_v1_parse_yaml() etc.
214214 * parsers. */
215215static gboolean
216- parse_file_as_subdoc (const gchar * filename ,
216+ parse_file_as_subdoc_and_validate (const gchar * filename ,
217217 enum mmd_type validation_type ,
218218 ModulemdYamlDocumentTypeEnum expected_type ,
219219 guint64 expected_version ,
@@ -312,15 +312,30 @@ parse_file_as_subdoc (const gchar *filename,
312312 return FALSE;
313313 }
314314 if (type == MODULEMD_YAML_DOC_DEFAULTS )
315+ /* validates implicitly */
315316 object = G_OBJECT (modulemd_defaults_v1_parse_yaml (subdoc , TRUE, error ));
316317 else if (type == MODULEMD_YAML_DOC_MODULESTREAM )
318+ {
317319 object = G_OBJECT (modulemd_module_stream_v1_parse_yaml (subdoc , TRUE, error ));
320+ if (!object )
321+ return FALSE;
322+ if (!modulemd_module_stream_validate ( MODULEMD_MODULE_STREAM (object ), error ))
323+ return FALSE;
324+ }
318325 else if (type == MODULEMD_YAML_DOC_OBSOLETES )
326+ /* validates implicitly */
319327 object = G_OBJECT (modulemd_obsoletes_parse_yaml (subdoc , TRUE, error ));
320328 else if (type == MODULEMD_YAML_DOC_PACKAGER )
329+ {
321330 object = G_OBJECT (modulemd_module_stream_v2_parse_yaml (subdoc ,
322331 TRUE, TRUE, error ));
332+ if (!object )
333+ return FALSE;
334+ if (!modulemd_module_stream_validate ( MODULEMD_MODULE_STREAM (object ), error ))
335+ return FALSE;
336+ }
323337 else if (type == MODULEMD_YAML_DOC_TRANSLATIONS )
338+ /* validates implicitly */
324339 object = G_OBJECT (modulemd_translation_parse_yaml (subdoc , TRUE, error ));
325340 else {
326341 g_set_error (
@@ -374,23 +389,23 @@ parse_file (const gchar *filename, GPtrArray **failures, GError **error)
374389 index , filename , TRUE, TRUE, failures , error );
375390 }
376391 case MMD_TYPE_MODULEMD_DEFAULTS_V1 :
377- return parse_file_as_subdoc (filename ,
378- options .type ,
379- MODULEMD_YAML_DOC_DEFAULTS ,
380- 1u ,
381- error );
392+ return parse_file_as_subdoc_and_validate (filename ,
393+ options .type ,
394+ MODULEMD_YAML_DOC_DEFAULTS ,
395+ 1u ,
396+ error );
382397 case MMD_TYPE_MODULEMD_OBSOLETES_V1 :
383- return parse_file_as_subdoc (filename ,
384- options .type ,
385- MODULEMD_YAML_DOC_OBSOLETES ,
386- 1u ,
387- error );
398+ return parse_file_as_subdoc_and_validate (filename ,
399+ options .type ,
400+ MODULEMD_YAML_DOC_OBSOLETES ,
401+ 1u ,
402+ error );
388403 case MMD_TYPE_MODULEMD_V1 :
389- return parse_file_as_subdoc (filename ,
390- options .type ,
391- MODULEMD_YAML_DOC_MODULESTREAM ,
392- 1u ,
393- error );
404+ return parse_file_as_subdoc_and_validate (filename ,
405+ options .type ,
406+ MODULEMD_YAML_DOC_MODULESTREAM ,
407+ 1u ,
408+ error );
394409 case MMD_TYPE_MODULEMD_V2 :
395410 {
396411 GType type ;
@@ -413,11 +428,11 @@ parse_file (const gchar *filename, GPtrArray **failures, GError **error)
413428 error );
414429 }
415430 case MMD_TYPE_MODULEMD_PACKAGER_V2 :
416- return parse_file_as_subdoc (filename ,
417- options .type ,
418- MODULEMD_YAML_DOC_PACKAGER ,
419- 2u ,
420- error );
431+ return parse_file_as_subdoc_and_validate (filename ,
432+ options .type ,
433+ MODULEMD_YAML_DOC_PACKAGER ,
434+ 2u ,
435+ error );
421436 case MMD_TYPE_MODULEMD_PACKAGER_V3 :
422437 {
423438 GType type ;
@@ -441,11 +456,12 @@ parse_file (const gchar *filename, GPtrArray **failures, GError **error)
441456 return TRUE;
442457 }
443458 case MMD_TYPE_MODULEMD_TRANSLATIONS_V1 :
444- return parse_file_as_subdoc (filename ,
445- options .type ,
446- MODULEMD_YAML_DOC_TRANSLATIONS ,
447- 1u ,
448- error );
459+ return parse_file_as_subdoc_and_validate (
460+ filename ,
461+ options .type ,
462+ MODULEMD_YAML_DOC_TRANSLATIONS ,
463+ 1u ,
464+ error );
449465 }
450466 g_fprintf (
451467 stderr ,
0 commit comments