OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "chrome/installer/util/advanced_firewall_manager_win.h" | 5 #include "chrome/installer/util/advanced_firewall_manager_win.h" |
6 | 6 |
7 #include <stddef.h> | 7 #include <stddef.h> |
8 | 8 |
9 #include "base/guid.h" | 9 #include "base/guid.h" |
10 #include "base/logging.h" | 10 #include "base/logging.h" |
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
73 const base::string16& description, | 73 const base::string16& description, |
74 uint16_t port) { | 74 uint16_t port) { |
75 // Delete the rule. According MDSN |INetFwRules::Add| should replace rule with | 75 // Delete the rule. According MDSN |INetFwRules::Add| should replace rule with |
76 // same "rule identifier". It's not clear what is "rule identifier", but it | 76 // same "rule identifier". It's not clear what is "rule identifier", but it |
77 // can successfully create many rule with same name. | 77 // can successfully create many rule with same name. |
78 DeleteRuleByName(rule_name); | 78 DeleteRuleByName(rule_name); |
79 | 79 |
80 // Create the rule and add it to the rule set (only succeeds if elevated). | 80 // Create the rule and add it to the rule set (only succeeds if elevated). |
81 base::win::ScopedComPtr<INetFwRule> udp_rule = | 81 base::win::ScopedComPtr<INetFwRule> udp_rule = |
82 CreateUDPRule(rule_name, description, port); | 82 CreateUDPRule(rule_name, description, port); |
83 if (!udp_rule.get()) | 83 if (!udp_rule.Get()) |
84 return false; | 84 return false; |
85 | 85 |
86 HRESULT hr = firewall_rules_->Add(udp_rule.get()); | 86 HRESULT hr = firewall_rules_->Add(udp_rule.Get()); |
87 DLOG_IF(ERROR, FAILED(hr)) << logging::SystemErrorCodeToString(hr); | 87 DLOG_IF(ERROR, FAILED(hr)) << logging::SystemErrorCodeToString(hr); |
88 return SUCCEEDED(hr); | 88 return SUCCEEDED(hr); |
89 } | 89 } |
90 | 90 |
91 void AdvancedFirewallManager::DeleteRuleByName( | 91 void AdvancedFirewallManager::DeleteRuleByName( |
92 const base::string16& rule_name) { | 92 const base::string16& rule_name) { |
93 std::vector<base::win::ScopedComPtr<INetFwRule> > rules; | 93 std::vector<base::win::ScopedComPtr<INetFwRule> > rules; |
94 GetAllRules(&rules); | 94 GetAllRules(&rules); |
95 for (size_t i = 0; i < rules.size(); ++i) { | 95 for (size_t i = 0; i < rules.size(); ++i) { |
96 base::win::ScopedBstr name; | 96 base::win::ScopedBstr name; |
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
151 void AdvancedFirewallManager::GetAllRules( | 151 void AdvancedFirewallManager::GetAllRules( |
152 std::vector<base::win::ScopedComPtr<INetFwRule> >* rules) { | 152 std::vector<base::win::ScopedComPtr<INetFwRule> >* rules) { |
153 base::win::ScopedComPtr<IUnknown> rules_enum_unknown; | 153 base::win::ScopedComPtr<IUnknown> rules_enum_unknown; |
154 HRESULT hr = firewall_rules_->get__NewEnum(rules_enum_unknown.Receive()); | 154 HRESULT hr = firewall_rules_->get__NewEnum(rules_enum_unknown.Receive()); |
155 if (FAILED(hr)) { | 155 if (FAILED(hr)) { |
156 DLOG(ERROR) << logging::SystemErrorCodeToString(hr); | 156 DLOG(ERROR) << logging::SystemErrorCodeToString(hr); |
157 return; | 157 return; |
158 } | 158 } |
159 | 159 |
160 base::win::ScopedComPtr<IEnumVARIANT> rules_enum; | 160 base::win::ScopedComPtr<IEnumVARIANT> rules_enum; |
161 hr = rules_enum.QueryFrom(rules_enum_unknown.get()); | 161 hr = rules_enum.QueryFrom(rules_enum_unknown.Get()); |
162 if (FAILED(hr)) { | 162 if (FAILED(hr)) { |
163 DLOG(ERROR) << logging::SystemErrorCodeToString(hr); | 163 DLOG(ERROR) << logging::SystemErrorCodeToString(hr); |
164 return; | 164 return; |
165 } | 165 } |
166 | 166 |
167 for (;;) { | 167 for (;;) { |
168 base::win::ScopedVariant rule_var; | 168 base::win::ScopedVariant rule_var; |
169 hr = rules_enum->Next(1, rule_var.Receive(), NULL); | 169 hr = rules_enum->Next(1, rule_var.Receive(), NULL); |
170 DLOG_IF(ERROR, FAILED(hr)) << logging::SystemErrorCodeToString(hr); | 170 DLOG_IF(ERROR, FAILED(hr)) << logging::SystemErrorCodeToString(hr); |
171 if (hr != S_OK) | 171 if (hr != S_OK) |
(...skipping 21 matching lines...) Expand all Loading... |
193 !base::FilePath::CompareEqualIgnoreCase(static_cast<BSTR>(path), | 193 !base::FilePath::CompareEqualIgnoreCase(static_cast<BSTR>(path), |
194 app_path_.value())) { | 194 app_path_.value())) { |
195 continue; | 195 continue; |
196 } | 196 } |
197 | 197 |
198 rules->push_back(rule); | 198 rules->push_back(rule); |
199 } | 199 } |
200 } | 200 } |
201 | 201 |
202 } // namespace installer | 202 } // namespace installer |
OLD | NEW |