summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZackery Spytz <zspytz@gmail.com>2019-05-31 18:16:20 -0600
committerBerker Peksag <berker.peksag@gmail.com>2019-06-01 03:16:20 +0300
commit549e55a3086d04c13da9b6f33214f6399681292a (patch)
treed3c4a93edc5b6226e0662fde023c861d7352e4fb
parented9f3562b637a59b9000abbceee5ae369d35444d (diff)
downloadcpython-git-549e55a3086d04c13da9b6f33214f6399681292a.tar.gz
bpo-12202: Properly check MsiSummaryInfoGetProperty() calls in msilib (GH-13711)
-rw-r--r--Lib/test/test_msilib.py9
-rw-r--r--Misc/NEWS.d/next/Library/2019-05-31-15-53-34.bpo-12202.nobzc9.rst2
-rw-r--r--PC/_msi.c3
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.
diff --git a/PC/_msi.c b/PC/_msi.c
index 4c8df5b42b..accbe7a720 100644
--- a/PC/_msi.c
+++ b/PC/_msi.c
@@ -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: