OLD | NEW |
---|---|
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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 "components/nacl/renderer/ppb_nacl_private_impl.h" | 5 #include "components/nacl/renderer/ppb_nacl_private_impl.h" |
6 | 6 |
7 #include <numeric> | 7 #include <numeric> |
8 #include <string> | 8 #include <string> |
9 #include <vector> | 9 #include <vector> |
10 | 10 |
(...skipping 1118 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1129 base::PlatformFile file = GetReadonlyPnaclFD(filename); | 1129 base::PlatformFile file = GetReadonlyPnaclFD(filename); |
1130 if (file == base::kInvalidPlatformFileValue) { | 1130 if (file == base::kInvalidPlatformFileValue) { |
1131 load_manager->ReportLoadError( | 1131 load_manager->ReportLoadError( |
1132 PP_NACL_ERROR_PNACL_RESOURCE_FETCH, | 1132 PP_NACL_ERROR_PNACL_RESOURCE_FETCH, |
1133 "The Portable Native Client (pnacl) component is not " | 1133 "The Portable Native Client (pnacl) component is not " |
1134 "installed. Please consult chrome://components for more " | 1134 "installed. Please consult chrome://components for more " |
1135 "information."); | 1135 "information."); |
1136 return PP_FALSE; | 1136 return PP_FALSE; |
1137 } | 1137 } |
1138 | 1138 |
1139 const int kBufferSize = 1 << 20; | 1139 base::PlatformFileInfo file_info; |
1140 scoped_ptr<char[]> buffer(new char[kBufferSize]); | 1140 if (!GetPlatformFileInfo(file, &file_info)) { |
1141 if (base::ReadPlatformFile(file, 0, buffer.get(), kBufferSize) < 0) { | |
1142 load_manager->ReportLoadError( | 1141 load_manager->ReportLoadError( |
1143 PP_NACL_ERROR_PNACL_RESOURCE_FETCH, | 1142 PP_NACL_ERROR_PNACL_RESOURCE_FETCH, |
1144 std::string("PnaclResources::ReadResourceInfo reading failed for: ") + | 1143 std::string("GetPNaClResourceInfo, GetFileInfo failed for: ") + |
1145 filename); | 1144 filename); |
1146 return PP_FALSE; | 1145 return PP_FALSE; |
1147 } | 1146 } |
1148 | 1147 |
1148 if (file_info.size > 1 << 20) { | |
bbudge
2014/05/08 00:15:59
The old behavior seems bad since it would only do
| |
1149 load_manager->ReportLoadError( | |
1150 PP_NACL_ERROR_PNACL_RESOURCE_FETCH, | |
1151 std::string("GetPNaClResourceInfo, file too large: ") + filename); | |
1152 return PP_FALSE; | |
1153 } | |
1154 | |
1155 scoped_ptr<char[]> buffer(new char[file_info.size]); | |
1156 if (buffer.get() == NULL) { | |
1157 load_manager->ReportLoadError( | |
1158 PP_NACL_ERROR_PNACL_RESOURCE_FETCH, | |
1159 std::string("GetPNaClResourceInfo, couldn't allocate for: ") + | |
1160 filename); | |
1161 return PP_FALSE; | |
1162 } | |
1163 | |
1164 if (base::ReadPlatformFile(file, 0, buffer.get(), file_info.size) < 0) { | |
1165 load_manager->ReportLoadError( | |
1166 PP_NACL_ERROR_PNACL_RESOURCE_FETCH, | |
1167 std::string("GetPNaClResourceInfo, reading failed for: ") + filename); | |
1168 return PP_FALSE; | |
1169 } | |
1170 | |
1149 // Expect the JSON file to contain a top-level object (dictionary). | 1171 // Expect the JSON file to contain a top-level object (dictionary). |
1150 Json::Reader json_reader; | 1172 Json::Reader json_reader; |
1151 Json::Value json_data; | 1173 Json::Value json_data; |
1152 if (!json_reader.parse(buffer.get(), json_data)) { | 1174 if (!json_reader.parse(buffer.get(), json_data)) { |
1153 load_manager->ReportLoadError( | 1175 load_manager->ReportLoadError( |
1154 PP_NACL_ERROR_PNACL_RESOURCE_FETCH, | 1176 PP_NACL_ERROR_PNACL_RESOURCE_FETCH, |
1155 std::string("Parsing resource info failed: JSON parse error: ") + | 1177 std::string("Parsing resource info failed: JSON parse error: ") + |
1156 json_reader.getFormattedErrorMessages()); | 1178 json_reader.getFormattedErrorMessages()); |
1157 return PP_FALSE; | 1179 return PP_FALSE; |
1158 } | 1180 } |
(...skipping 122 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1281 &GetCpuFeatureAttrs | 1303 &GetCpuFeatureAttrs |
1282 }; | 1304 }; |
1283 | 1305 |
1284 } // namespace | 1306 } // namespace |
1285 | 1307 |
1286 const PPB_NaCl_Private* GetNaClPrivateInterface() { | 1308 const PPB_NaCl_Private* GetNaClPrivateInterface() { |
1287 return &nacl_interface; | 1309 return &nacl_interface; |
1288 } | 1310 } |
1289 | 1311 |
1290 } // namespace nacl | 1312 } // namespace nacl |
OLD | NEW |