winget-cli

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README | LICENSE

commit dc7ed4db950b6b373b1b4fc513c1c60e7458b344
parent f52472abb7c8d013ffbadfbea5e09441f997c386
Author: JohnMcPMS <johnmcp@microsoft.com>
Date:   Wed, 12 Aug 2020 11:42:49 -0700

Replace yaml-cpp with libyaml (#535)

Due to certain bugs in yaml-cpp, it has not had significant fuzzing applied.  Even if those bugs were fixed, it is unknown how many more might exist behind it.  In order to avoid chasing those bugs, we are switching to a YAML parser that does have significant fuzz testing coverage, [libyaml](https://github.com/yaml/libyaml).

In addition to the use of libyaml, a C++ wrapper is written to create a near identical surface area for use by the existing manifest validation.  It also includes encoding detection to enable support for ANSI (assumed Windows-1252, which wasn't supported by yaml-cpp), UTF-8 (with and without BOM), UTF-16 LE/BE (both with and without BOM).

Finally, the `validate` command now returns a non-zero value when there are issues.  If there is a failure during validation, the value returned is `0x8A150029`.  If there are only warnings, the value returned is `0x8A150028`.
Diff is too large, output suppressed.