aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSean Hall <r.sean.hall@gmail.com>2023-02-19 21:38:21 -0600
committerSean Hall <r.sean.hall@gmail.com>2023-02-19 22:39:24 -0600
commit26adc0c6bf1e4aafe6dc261f8aca09636ca63912 (patch)
tree8eff96f6ab8f3823a54617004cb0729ff148d945
parenta8a0dde828c474067cb92fd9cfec85372ab4160e (diff)
downloadwix-26adc0c6bf1e4aafe6dc261f8aca09636ca63912.tar.gz
wix-26adc0c6bf1e4aafe6dc261f8aca09636ca63912.tar.bz2
wix-26adc0c6bf1e4aafe6dc261f8aca09636ca63912.zip
Fix double-free bugs in thmutil.
Fixes 7231
-rw-r--r--src/libs/dutil/WixToolset.DUtil/thmutil.cpp6
-rw-r--r--src/test/burn/TestData/Manual/BafThmutilTesting/theme/BafThmUtilTestingTheme.xml27
-rw-r--r--src/test/burn/TestData/Manual/BafThmutilTesting/theme/BafThmUtilTestingThemeLoose.xml27
3 files changed, 57 insertions, 3 deletions
diff --git a/src/libs/dutil/WixToolset.DUtil/thmutil.cpp b/src/libs/dutil/WixToolset.DUtil/thmutil.cpp
index 7bd98a1a..7938cd0b 100644
--- a/src/libs/dutil/WixToolset.DUtil/thmutil.cpp
+++ b/src/libs/dutil/WixToolset.DUtil/thmutil.cpp
@@ -3752,7 +3752,7 @@ static HRESULT ParseActions(
3752 3752
3753 ++i; 3753 ++i;
3754 ReleaseNullBSTR(bstrType); 3754 ReleaseNullBSTR(bstrType);
3755 ReleaseObject(pixnChild); 3755 ReleaseNullObject(pixnChild);
3756 } 3756 }
3757 } 3757 }
3758 3758
@@ -3984,8 +3984,8 @@ static HRESULT ParseRadioButtons(
3984 pControl->fLastRadioButton = TRUE; 3984 pControl->fLastRadioButton = TRUE;
3985 } 3985 }
3986 3986
3987 ReleaseObject(pixnl); 3987 ReleaseNullObject(pixnl);
3988 ReleaseObject(pixnRadioButtons); 3988 ReleaseNullObject(pixnRadioButtons);
3989 } 3989 }
3990 3990
3991LExit: 3991LExit:
diff --git a/src/test/burn/TestData/Manual/BafThmutilTesting/theme/BafThmUtilTestingTheme.xml b/src/test/burn/TestData/Manual/BafThmutilTesting/theme/BafThmUtilTestingTheme.xml
index c890d7df..a5198a13 100644
--- a/src/test/burn/TestData/Manual/BafThmutilTesting/theme/BafThmUtilTestingTheme.xml
+++ b/src/test/burn/TestData/Manual/BafThmutilTesting/theme/BafThmUtilTestingTheme.xml
@@ -160,6 +160,33 @@ There are currently four states for a button: default, focus, hover, and selecte
160 <Text>Back</Text> 160 <Text>Back</Text>
161 <ChangePageAction Page="Progressbar" /> 161 <ChangePageAction Page="Progressbar" />
162 </Button> 162 </Button>
163 <Button Name="RadioButtonsButton" X="-183" Y="-11" Width="75" Height="23" TabStop="yes" FontId="Default">
164 <Text>Next</Text>
165 <ChangePageAction Page="RadioButtons" />
166 </Button>
167 </Page>
168 <Page Name="RadioButtons">
169 <Label X="6" Y="6" Width="-6" Height="43" FontId="Default">
170 This page has two groups of radio buttons. Only one value should be able to be selected for each group. A value should be able to be selected for both groups.
171 </Label>
172 <Label X="6" Y="50" Width="-6" Height="13" FontId="Default">
173 Choice #1:
174 </Label>
175 <RadioButtons Name="CHOICE">
176 <RadioButton Height="30" Width="30" X="33" Y="68" Value="1" />
177 <RadioButton Height="30" Width="30" X="33" Y="103" Value="2" />
178 </RadioButtons>
179 <Label X="6" Y="138" Width="-6" Height="13" FontId="Default">
180 Choice #2:
181 </Label>
182 <RadioButtons Name="CHOICE2">
183 <RadioButton Height="30" Width="130" X="33" Y="156" Value="1">One</RadioButton>
184 <RadioButton Height="30" Width="130" X="33" Y="191" Value="2">Two</RadioButton>
185 </RadioButtons>
186 <Button Name="RadioButtonsBackButton" X="-269" Y="-11" Width="75" Height="23" TabStop="yes" FontId="Default">
187 <Text>Back</Text>
188 <ChangePageAction Page="Billboard" />
189 </Button>
163 </Page> 190 </Page>
164 <Button Name="StartButton" X="-97" Y="-11" Width="75" Height="23" TabStop="yes" FontId="Default" Visible="yes"> 191 <Button Name="StartButton" X="-97" Y="-11" Width="75" Height="23" TabStop="yes" FontId="Default" Visible="yes">
165 <Text>Start</Text> 192 <Text>Start</Text>
diff --git a/src/test/burn/TestData/Manual/BafThmutilTesting/theme/BafThmUtilTestingThemeLoose.xml b/src/test/burn/TestData/Manual/BafThmutilTesting/theme/BafThmUtilTestingThemeLoose.xml
index 37757e64..bb91d3ce 100644
--- a/src/test/burn/TestData/Manual/BafThmutilTesting/theme/BafThmUtilTestingThemeLoose.xml
+++ b/src/test/burn/TestData/Manual/BafThmutilTesting/theme/BafThmUtilTestingThemeLoose.xml
@@ -160,6 +160,33 @@ There are currently four states for a button: default, focus, hover, and selecte
160 <Text>Back</Text> 160 <Text>Back</Text>
161 <ChangePageAction Page="Progressbar" /> 161 <ChangePageAction Page="Progressbar" />
162 </Button> 162 </Button>
163 <Button Name="RadioButtonsButton" X="-183" Y="-11" Width="75" Height="23" TabStop="yes" FontId="Default">
164 <Text>Next</Text>
165 <ChangePageAction Page="RadioButtons" />
166 </Button>
167 </Page>
168 <Page Name="RadioButtons">
169 <Label X="6" Y="6" Width="-6" Height="43" FontId="Default">
170 This page has two groups of radio buttons. Only one value should be able to be selected for each group. A value should be able to be selected for both groups.
171 </Label>
172 <Label X="6" Y="50" Width="-6" Height="13" FontId="Default">
173 Choice #1:
174 </Label>
175 <RadioButtons Name="CHOICE">
176 <RadioButton Height="30" Width="30" X="33" Y="68" Value="1" />
177 <RadioButton Height="30" Width="30" X="33" Y="103" Value="2" />
178 </RadioButtons>
179 <Label X="6" Y="138" Width="-6" Height="13" FontId="Default">
180 Choice #2:
181 </Label>
182 <RadioButtons Name="CHOICE2">
183 <RadioButton Height="30" Width="130" X="33" Y="156" Value="1">One</RadioButton>
184 <RadioButton Height="30" Width="130" X="33" Y="191" Value="2">Two</RadioButton>
185 </RadioButtons>
186 <Button Name="RadioButtonsBackButton" X="-269" Y="-11" Width="75" Height="23" TabStop="yes" FontId="Default">
187 <Text>Back</Text>
188 <ChangePageAction Page="Billboard" />
189 </Button>
163 </Page> 190 </Page>
164 <Button Name="StartButton" X="-97" Y="-11" Width="75" Height="23" TabStop="yes" FontId="Default" Visible="yes"> 191 <Button Name="StartButton" X="-97" Y="-11" Width="75" Height="23" TabStop="yes" FontId="Default" Visible="yes">
165 <Text>Start</Text> 192 <Text>Start</Text>