Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(41)

Side by Side Diff: tools/ipc_fuzzer/message_tools/message_util.cc

Issue 2972773004: Remove ScopedVector from tools/ipc_fuzzer/. (Closed)
Patch Set: rev Created 3 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « tools/ipc_fuzzer/message_replay/replay_process.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 <limits.h> 5 #include <limits.h>
6 #include <stddef.h> 6 #include <stddef.h>
7 #include <stdlib.h> 7 #include <stdlib.h>
8
8 #include <iostream> 9 #include <iostream>
10 #include <iterator>
9 #include <string> 11 #include <string>
12 #include <utility>
10 #include <vector> 13 #include <vector>
11 14
12 #include "base/command_line.h" 15 #include "base/command_line.h"
13 #include "base/strings/string_split.h" 16 #include "base/strings/string_split.h"
14 #include "third_party/re2/src/re2/re2.h" 17 #include "third_party/re2/src/re2/re2.h"
15 #include "tools/ipc_fuzzer/message_lib/message_file.h" 18 #include "tools/ipc_fuzzer/message_lib/message_file.h"
16 #include "tools/ipc_fuzzer/message_lib/message_names.h" 19 #include "tools/ipc_fuzzer/message_lib/message_names.h"
17 20
18 namespace { 21 namespace {
19 22
(...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after
120 } 123 }
121 124
122 ipc_fuzzer::MessageVector input_message_vector; 125 ipc_fuzzer::MessageVector input_message_vector;
123 for (const base::FilePath::StringType& name : base::SplitString( 126 for (const base::FilePath::StringType& name : base::SplitString(
124 args[0], base::FilePath::StringType(1, ','), 127 args[0], base::FilePath::StringType(1, ','),
125 base::TRIM_WHITESPACE, base::SPLIT_WANT_ALL)) { 128 base::TRIM_WHITESPACE, base::SPLIT_WANT_ALL)) {
126 ipc_fuzzer::MessageVector message_vector; 129 ipc_fuzzer::MessageVector message_vector;
127 if (!ipc_fuzzer::MessageFile::Read(base::FilePath(name), &message_vector)) 130 if (!ipc_fuzzer::MessageFile::Read(base::FilePath(name), &message_vector))
128 return EXIT_FAILURE; 131 return EXIT_FAILURE;
129 input_message_vector.insert(input_message_vector.end(), 132 input_message_vector.insert(input_message_vector.end(),
130 message_vector.begin(), message_vector.end()); 133 std::make_move_iterator(message_vector.begin()),
131 message_vector.weak_clear(); 134 std::make_move_iterator(message_vector.end()));
132 } 135 }
133 136
134 bool has_indices = cmd->HasSwitch(kInSwitch); 137 bool has_indices = cmd->HasSwitch(kInSwitch);
135 std::vector<bool> indices; 138 std::vector<bool> indices;
136 139
137 if (has_indices) { 140 if (has_indices) {
138 indices.resize(input_message_vector.size(), false); 141 indices.resize(input_message_vector.size(), false);
139 for (const std::string& cur : base::SplitString( 142 for (const std::string& cur : base::SplitString(
140 cmd->GetSwitchValueASCII(kInSwitch), ",", base::TRIM_WHITESPACE, 143 cmd->GetSwitchValueASCII(kInSwitch), ",", base::TRIM_WHITESPACE,
141 base::SPLIT_WANT_ALL)) { 144 base::SPLIT_WANT_ALL)) {
142 int index = atoi(cur.c_str()); 145 int index = atoi(cur.c_str());
143 if (index >= 0 && static_cast<size_t>(index) < indices.size()) 146 if (index >= 0 && static_cast<size_t>(index) < indices.size())
144 indices[index] = true; 147 indices[index] = true;
145 } 148 }
146 } 149 }
147 150
148 ipc_fuzzer::MessageVector output_message_vector; 151 ipc_fuzzer::MessageVector output_message_vector;
149 std::vector<size_t> remap_vector; 152 std::vector<size_t> remap_vector;
150 153
151 for (size_t i = 0; i < input_message_vector.size(); ++i) { 154 for (size_t i = 0; i < input_message_vector.size(); ++i) {
152 bool valid = (i >= start_index && i < end_index); 155 bool valid = (i >= start_index && i < end_index);
153 if (valid && has_regexp) { 156 if (valid && has_regexp) {
154 valid = MessageMatches(input_message_vector[i], filter_pattern); 157 valid = MessageMatches(input_message_vector[i].get(), filter_pattern);
155 } 158 }
156 if (valid && has_indices) { 159 if (valid && has_indices) {
157 valid = indices[i]; 160 valid = indices[i];
158 } 161 }
159 if (valid != invert) { 162 if (valid != invert) {
160 output_message_vector.push_back(input_message_vector[i]); 163 output_message_vector.push_back(std::move(input_message_vector[i]));
161 remap_vector.push_back(i); 164 remap_vector.push_back(i);
162 input_message_vector[i] = NULL;
163 } 165 }
164 } 166 }
165 167
166 if (perform_dump) { 168 if (perform_dump) {
167 for (size_t i = 0; i < output_message_vector.size(); ++i) { 169 for (size_t i = 0; i < output_message_vector.size(); ++i) {
168 std::cout << remap_vector[i] << ". " 170 std::cout << remap_vector[i] << ". "
169 << MessageName(output_message_vector[i]) << "\n"; 171 << MessageName(output_message_vector[i].get()) << "\n";
170 } 172 }
171 } else { 173 } else {
172 if (!ipc_fuzzer::MessageFile::Write( 174 if (!ipc_fuzzer::MessageFile::Write(
173 base::FilePath(output_file_name), output_message_vector)) { 175 base::FilePath(output_file_name), output_message_vector)) {
174 return EXIT_FAILURE; 176 return EXIT_FAILURE;
175 } 177 }
176 } 178 }
177 179
178 return EXIT_SUCCESS; 180 return EXIT_SUCCESS;
179 } 181 }
OLDNEW
« no previous file with comments | « tools/ipc_fuzzer/message_replay/replay_process.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698