diff options
author | Zackery Spytz <zspytz@gmail.com> | 2019-05-31 18:16:20 -0600 |
---|---|---|
committer | Berker Peksag <berker.peksag@gmail.com> | 2019-06-01 03:16:20 +0300 |
commit | 549e55a3086d04c13da9b6f33214f6399681292a (patch) | |
tree | d3c4a93edc5b6226e0662fde023c861d7352e4fb | |
parent | ed9f3562b637a59b9000abbceee5ae369d35444d (diff) | |
download | cpython-git-549e55a3086d04c13da9b6f33214f6399681292a.tar.gz |
bpo-12202: Properly check MsiSummaryInfoGetProperty() calls in msilib (GH-13711)
-rw-r--r-- | Lib/test/test_msilib.py | 9 | ||||
-rw-r--r-- | Misc/NEWS.d/next/Library/2019-05-31-15-53-34.bpo-12202.nobzc9.rst | 2 | ||||
-rw-r--r-- | PC/_msi.c | 3 |
3 files changed, 14 insertions, 0 deletions
diff --git a/Lib/test/test_msilib.py b/Lib/test/test_msilib.py index 265eaea59b..fa0be58161 100644 --- a/Lib/test/test_msilib.py +++ b/Lib/test/test_msilib.py @@ -85,6 +85,7 @@ class MsiDatabaseTestCase(unittest.TestCase): def test_directory_start_component_keyfile(self): db, db_path = init_database() + self.addCleanup(unlink, db_path) self.addCleanup(db.Close) feature = msilib.Feature(db, 0, 'Feature', 'A feature', 'Python') cab = msilib.CAB('CAB') @@ -92,6 +93,14 @@ class MsiDatabaseTestCase(unittest.TestCase): 'SourceDir', 0) dir.start_component(None, feature, None, 'keyfile') + def test_getproperty_uninitialized_var(self): + db, db_path = init_database() + self.addCleanup(unlink, db_path) + self.addCleanup(db.Close) + si = db.GetSummaryInformation(0) + with self.assertRaises(msilib.MSIError): + si.GetProperty(-1) + class Test_make_id(unittest.TestCase): #http://msdn.microsoft.com/en-us/library/aa369212(v=vs.85).aspx diff --git a/Misc/NEWS.d/next/Library/2019-05-31-15-53-34.bpo-12202.nobzc9.rst b/Misc/NEWS.d/next/Library/2019-05-31-15-53-34.bpo-12202.nobzc9.rst new file mode 100644 index 0000000000..1e56197044 --- /dev/null +++ b/Misc/NEWS.d/next/Library/2019-05-31-15-53-34.bpo-12202.nobzc9.rst @@ -0,0 +1,2 @@ +Fix the error handling in :meth:`msilib.SummaryInformation.GetProperty`. Patch +by Zackery Spytz. @@ -571,6 +571,9 @@ summary_getproperty(msiobj* si, PyObject *args) status = MsiSummaryInfoGetProperty(si->h, field, &type, &ival, &fval, sval, &ssize); } + if (status != ERROR_SUCCESS) { + return msierror(status); + } switch(type) { case VT_I2: |