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

Side by Side Diff: third_party/qcms/src/iccread.c

Issue 363593004: Check for unused tag_len in read_nested_curveType() (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 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 | Annotate | Revision Log
« no previous file with comments | « third_party/qcms/google.patch ('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 /* vim: set ts=8 sw=8 noexpandtab: */ 1 /* vim: set ts=8 sw=8 noexpandtab: */
2 // qcms 2 // qcms
3 // Copyright (C) 2009 Mozilla Foundation 3 // Copyright (C) 2009 Mozilla Foundation
4 // Copyright (C) 1998-2007 Marti Maria 4 // Copyright (C) 1998-2007 Marti Maria
5 // 5 //
6 // Permission is hereby granted, free of charge, to any person obtaining 6 // Permission is hereby granted, free of charge, to any person obtaining
7 // a copy of this software and associated documentation files (the "Software"), 7 // a copy of this software and associated documentation files (the "Software"),
8 // to deal in the Software without restriction, including without limitation 8 // to deal in the Software without restriction, including without limitation
9 // the rights to use, copy, modify, merge, publish, distribute, sublicense, 9 // the rights to use, copy, modify, merge, publish, distribute, sublicense,
10 // and/or sell copies of the Software, and to permit persons to whom the Softwar e 10 // and/or sell copies of the Software, and to permit persons to whom the Softwar e
(...skipping 475 matching lines...) Expand 10 before | Expand all | Expand 10 after
486 return curve; 486 return curve;
487 } 487 }
488 488
489 #define MAX_CLUT_SIZE 500000 // arbitrary 489 #define MAX_CLUT_SIZE 500000 // arbitrary
490 #define MAX_CHANNELS 10 // arbitrary 490 #define MAX_CHANNELS 10 // arbitrary
491 static void read_nested_curveType(struct mem_source *src, struct curveType *(*cu rveArray)[MAX_CHANNELS], uint8_t num_channels, uint32_t curve_offset) 491 static void read_nested_curveType(struct mem_source *src, struct curveType *(*cu rveArray)[MAX_CHANNELS], uint8_t num_channels, uint32_t curve_offset)
492 { 492 {
493 uint32_t channel_offset = 0; 493 uint32_t channel_offset = 0;
494 int i; 494 int i;
495 for (i = 0; i < num_channels; i++) { 495 for (i = 0; i < num_channels; i++) {
496 » » uint32_t tag_len; 496 » » uint32_t tag_len = ~0;
497 497
498 (*curveArray)[i] = read_curveType(src, curve_offset + channel_of fset, &tag_len); 498 (*curveArray)[i] = read_curveType(src, curve_offset + channel_of fset, &tag_len);
499 if (!(*curveArray)[i]) { 499 if (!(*curveArray)[i]) {
500 invalid_source(src, "invalid nested curveType curve"); 500 invalid_source(src, "invalid nested curveType curve");
501 } 501 }
502 502
503 if (tag_len == ~0) {
504 invalid_source(src, "invalid nested curveType tag length ");
505 return;
506 }
507
503 channel_offset += tag_len; 508 channel_offset += tag_len;
504 // 4 byte aligned 509 // 4 byte aligned
505 if ((tag_len % 4) != 0) 510 if ((tag_len % 4) != 0)
506 channel_offset += 4 - (tag_len % 4); 511 channel_offset += 4 - (tag_len % 4);
507 } 512 }
508
509 } 513 }
510 514
511 static void mAB_release(struct lutmABType *lut) 515 static void mAB_release(struct lutmABType *lut)
512 { 516 {
513 uint8_t i; 517 uint8_t i;
514 518
515 for (i = 0; i < lut->num_in_channels; i++){ 519 for (i = 0; i < lut->num_in_channels; i++){
516 free(lut->a_curves[i]); 520 free(lut->a_curves[i]);
517 } 521 }
518 for (i = 0; i < lut->num_out_channels; i++){ 522 for (i = 0; i < lut->num_out_channels; i++){
(...skipping 688 matching lines...) Expand 10 before | Expand all | Expand 10 after
1207 { 1211 {
1208 qcms_profile *profile = NULL; 1212 qcms_profile *profile = NULL;
1209 FILE *file = _wfopen(path, L"rb"); 1213 FILE *file = _wfopen(path, L"rb");
1210 if (file) { 1214 if (file) {
1211 profile = qcms_profile_from_file(file); 1215 profile = qcms_profile_from_file(file);
1212 fclose(file); 1216 fclose(file);
1213 } 1217 }
1214 return profile; 1218 return profile;
1215 } 1219 }
1216 #endif 1220 #endif
OLDNEW
« no previous file with comments | « third_party/qcms/google.patch ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698