OLD | NEW |
1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2009 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 "ots.h" | 5 #include "ots.h" |
6 | 6 |
7 #include <sys/types.h> | 7 #include <sys/types.h> |
8 | 8 |
9 #include <algorithm> | 9 #include <algorithm> |
10 #include <cstdlib> | 10 #include <cstdlib> |
(...skipping 340 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
351 | 351 |
352 output->ResetChecksum(); | 352 output->ResetChecksum(); |
353 if (table_parsers[i].tag == Tag("head")) { | 353 if (table_parsers[i].tag == Tag("head")) { |
354 head_table_offset = out.offset; | 354 head_table_offset = out.offset; |
355 } | 355 } |
356 if (!table_parsers[i].serialise(output, header)) { | 356 if (!table_parsers[i].serialise(output, header)) { |
357 return OTS_FAILURE(); | 357 return OTS_FAILURE(); |
358 } | 358 } |
359 | 359 |
360 const size_t end_offset = output->Tell(); | 360 const size_t end_offset = output->Tell(); |
| 361 if (end_offset <= out.offset) { |
| 362 // paranoid check. |end_offset| is supposed to be greater than the offset, |
| 363 // as long as the Tell() interface is implemented correctly. |
| 364 return OTS_FAILURE(); |
| 365 } |
361 out.length = end_offset - out.offset; | 366 out.length = end_offset - out.offset; |
362 | 367 |
363 // align tables to four bytes | 368 // align tables to four bytes |
364 if (!output->Pad((4 - (end_offset & 3)) % 4)) { | 369 if (!output->Pad((4 - (end_offset & 3)) % 4)) { |
365 return OTS_FAILURE(); | 370 return OTS_FAILURE(); |
366 } | 371 } |
367 out.chksum = output->chksum(); | 372 out.chksum = output->chksum(); |
368 out_tables.push_back(out); | 373 out_tables.push_back(out); |
369 } | 374 } |
370 | 375 |
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
447 va_start(va, format); | 452 va_start(va, format); |
448 std::vfprintf(stderr, format, va); | 453 std::vfprintf(stderr, format, va); |
449 va_end(va); | 454 va_end(va); |
450 std::fprintf(stderr, "\n"); | 455 std::fprintf(stderr, "\n"); |
451 std::fflush(stderr); | 456 std::fflush(stderr); |
452 } | 457 } |
453 } | 458 } |
454 #endif | 459 #endif |
455 | 460 |
456 } // namespace ots | 461 } // namespace ots |
OLD | NEW |