| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 "ipc/ipc_message_utils.h" | 5 #include "ipc/ipc_message_utils.h" |
| 6 | 6 |
| 7 #include "base/file_path.h" | 7 #include "base/file_path.h" |
| 8 #include "base/json/json_writer.h" | 8 #include "base/json/json_writer.h" |
| 9 #include "base/memory/scoped_ptr.h" | 9 #include "base/memory/scoped_ptr.h" |
| 10 #include "base/nullable_string16.h" | 10 #include "base/nullable_string16.h" |
| (...skipping 481 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 492 std::string* l) { | 492 std::string* l) { |
| 493 if (p.auto_close) { | 493 if (p.auto_close) { |
| 494 l->append(StringPrintf("FD(%d auto-close)", p.fd)); | 494 l->append(StringPrintf("FD(%d auto-close)", p.fd)); |
| 495 } else { | 495 } else { |
| 496 l->append(StringPrintf("FD(%d)", p.fd)); | 496 l->append(StringPrintf("FD(%d)", p.fd)); |
| 497 } | 497 } |
| 498 } | 498 } |
| 499 #endif // defined(OS_POSIX) | 499 #endif // defined(OS_POSIX) |
| 500 | 500 |
| 501 void ParamTraits<FilePath>::Write(Message* m, const param_type& p) { | 501 void ParamTraits<FilePath>::Write(Message* m, const param_type& p) { |
| 502 ParamTraits<FilePath::StringType>::Write(m, p.value()); | 502 p.WriteToPickle(m); |
| 503 } | 503 } |
| 504 | 504 |
| 505 bool ParamTraits<FilePath>::Read(const Message* m, | 505 bool ParamTraits<FilePath>::Read(const Message* m, |
| 506 PickleIterator* iter, | 506 PickleIterator* iter, |
| 507 param_type* r) { | 507 param_type* r) { |
| 508 FilePath::StringType value; | 508 return r->ReadFromPickle(iter); |
| 509 if (!ParamTraits<FilePath::StringType>::Read(m, iter, &value)) | |
| 510 return false; | |
| 511 // Reject embedded NULs as they can cause security checks to go awry. | |
| 512 if (value.find(FILE_PATH_LITERAL('\0')) != FilePath::StringType::npos) | |
| 513 return false; | |
| 514 *r = FilePath(value); | |
| 515 return true; | |
| 516 } | 509 } |
| 517 | 510 |
| 518 void ParamTraits<FilePath>::Log(const param_type& p, std::string* l) { | 511 void ParamTraits<FilePath>::Log(const param_type& p, std::string* l) { |
| 519 ParamTraits<FilePath::StringType>::Log(p.value(), l); | 512 ParamTraits<FilePath::StringType>::Log(p.value(), l); |
| 520 } | 513 } |
| 521 | 514 |
| 522 void ParamTraits<ListValue>::Write(Message* m, const param_type& p) { | 515 void ParamTraits<ListValue>::Write(Message* m, const param_type& p) { |
| 523 WriteValue(m, &p, 0); | 516 WriteValue(m, &p, 0); |
| 524 } | 517 } |
| 525 | 518 |
| (...skipping 305 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 831 return result; | 824 return result; |
| 832 } | 825 } |
| 833 | 826 |
| 834 void ParamTraits<MSG>::Log(const param_type& p, std::string* l) { | 827 void ParamTraits<MSG>::Log(const param_type& p, std::string* l) { |
| 835 l->append("<MSG>"); | 828 l->append("<MSG>"); |
| 836 } | 829 } |
| 837 | 830 |
| 838 #endif // OS_WIN | 831 #endif // OS_WIN |
| 839 | 832 |
| 840 } // namespace IPC | 833 } // namespace IPC |
| OLD | NEW |