autopkg / recipes

Recipes for AutoPkg
231 stars 206 forks source link

Errant plist data in metadata for MSCompanyPortal download recipe causes autopg run to abort #464

Open carlashley opened 1 year ago

carlashley commented 1 year ago

Describe the problem When testing the MSCompanyPortal download recipe relating to #463 there was an issue caused by an errant line break in the Location value that the Microsoft feed had.

Preferences contents N/A

AutoPkg output

{'Output': {'additional_pkginfo': {'installs': [{'CFBundleVersion': '53.2307220.002',
                                                 'path': '/Applications/Company '
                                                         'Portal.app',
                                                 'type': 'application'}],
                                   'minimum_os_version': '10.15'},
            'minimum_os_version': '10.15',
            'url': '\n'
                   '                '
                   'https://officecdnmac.microsoft.com/pr/C1297A47-86C4-4C1F-97FA-950631F94777/MacAutoupdate/CompanyPortal_5.2307.1-Upgrade.pkg',
            'version': '53.2307220.002'}}
URLDownloader
{'Input': {'filename': 'CompanyPortal-53.2307220.002.pkg',
           'url': '\n'
                  '                '
                  'https://officecdnmac.microsoft.com/pr/C1297A47-86C4-4C1F-97FA-950631F94777/MacAutoupdate/CompanyPortal_5.2307.1-Upgrade.pkg'}}
URLDownloader: No value supplied for prefetch_filename, setting default value of: False
URLDownloader: No value supplied for CHECK_FILESIZE_ONLY, setting default value of: False
URLDownloader: ERROR: (3) URL rejected: Malformed input to a URL function
<snip>
subprocess.CalledProcessError: Command '['/usr/bin/curl', '--silent', '--show-error', '--no-buffer', '--dump-header', '-', '--speed-time', '30', '--location', '--url', '\n                https://officecdnmac.microsoft.com/pr/C1297A47-86C4-4C1F-97FA-950631F94777/MacAutoupdate/CompanyPortal_5.2307.1-Upgrade.pkg', '--fail', '--output', '/Users/jappleseed/Library/AutoPkg/Cache/com.github.autopkg.download.MSCompanyPortal/downloads/tmpbs2pfwb7']' returned non-zero exit status 3.```

**Expected behavior**
While I don't really expect that this processor should have to deal with these errant issues, adding in a test relating to the `metadata` that is created [here](https://github.com/autopkg/recipes/blob/aae83c7fb5bb1f8b1c2bff14ec81ec577802712f/MSOfficeUpdates/MSOfficeMacURLandUpdateInfoProvider.py#L284) sorts this out.
    # Ensure the 'location' key containing a URL is stripped to avoid processor failure
    if isinstance(metadata, list) and all(isinstance(item, dict) for item in metadata):
        metadata = [
            {k: v.strip() if isinstance(v, str) and v is not None else v for k, v in item.items()}
            for item in metadata.copy()
        ]


Perhaps this could be a part of the processor script to potentially avoid this type of abort in the future?

**Version (please complete the following information):**
- OS version: macOS 13.5
- AutoPkg Version: 2.7.2