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

Side by Side Diff: libexif/sources/libexif/olympus/mnote-olympus-entry.c

Issue 10792004: Fetch libexif 0.6.21 to include the security fixes. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/deps/third_party/
Patch Set: Created 8 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 | « libexif/sources/libexif/fuji/mnote-fuji-tag.c ('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 /* mnote-olympus-entry.c 1 /* mnote-olympus-entry.c
2 * 2 *
3 * Copyright (c) 2002-2009 Lutz Mueller <lutz@users.sourceforge.net> et. al. 3 * Copyright (c) 2002-2009 Lutz Mueller <lutz@users.sourceforge.net> et. al.
4 * 4 *
5 * This library is free software; you can redistribute it and/or 5 * This library is free software; you can redistribute it and/or
6 * modify it under the terms of the GNU Lesser General Public 6 * modify it under the terms of the GNU Lesser General Public
7 * License as published by the Free Software Foundation; either 7 * License as published by the Free Software Foundation; either
8 * version 2 of the License, or (at your option) any later version. 8 * version 2 of the License, or (at your option) any later version.
9 * 9 *
10 * This library is distributed in the hope that it will be useful, 10 * This library is distributed in the hope that it will be useful,
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
69 { \ 69 { \
70 if ((number < t1) || (number > t2)) { \ 70 if ((number < t1) || (number > t2)) { \
71 snprintf (v, maxlen, \ 71 snprintf (v, maxlen, \
72 _("Invalid number of components (%i, " \ 72 _("Invalid number of components (%i, " \
73 "expected %i or %i)."), (int) number, \ 73 "expected %i or %i)."), (int) number, \
74 (int) t1, (int) t2); \ 74 (int) t1, (int) t2); \
75 break; \ 75 break; \
76 } \ 76 } \
77 } 77 }
78 78
79 #define R2L(n) ((n).denominator ? (long)(n).numerator/(n).denominator : 0L)
80 #define R2D(n) ((n).denominator ? (double)(n).numerator/(n).denominator : 0.0)
81
79 static const struct { 82 static const struct {
80 ExifTag tag; 83 ExifTag tag;
81 ExifFormat fmt; 84 ExifFormat fmt;
82 struct { 85 struct {
83 int index; 86 int index;
84 const char *string; 87 const char *string;
85 } elem[24]; 88 } elem[24];
86 } items[] = { 89 } items[] = {
87 #ifndef NO_VERBOSE_TAG_DATA 90 #ifndef NO_VERBOSE_TAG_DATA
88 { MNOTE_NIKON_TAG_LENSTYPE, EXIF_FORMAT_BYTE, 91 { MNOTE_NIKON_TAG_LENSTYPE, EXIF_FORMAT_BYTE,
(...skipping 191 matching lines...) Expand 10 before | Expand all | Expand 10 after
280 283
281 if (!entry) 284 if (!entry)
282 return (NULL); 285 return (NULL);
283 286
284 memset (v, 0, maxlen); 287 memset (v, 0, maxlen);
285 maxlen--; 288 maxlen--;
286 289
287 if ((!entry->data) && (entry->components > 0)) 290 if ((!entry->data) && (entry->components > 0))
288 return (v); 291 return (v);
289 292
293 if ((!entry->data) && (entry->size > 0))
294 return NULL; /* internal inconsistency error */
295
290 switch (entry->tag) { 296 switch (entry->tag) {
291 297
292 /* Nikon */ 298 /* Nikon */
293 case MNOTE_NIKON_TAG_FIRMWARE: 299 case MNOTE_NIKON_TAG_FIRMWARE:
294 CF (entry->format, EXIF_FORMAT_UNDEFINED, v, maxlen); 300 CF (entry->format, EXIF_FORMAT_UNDEFINED, v, maxlen);
295 CC (entry->components, 4, v, maxlen); 301 CC (entry->components, 4, v, maxlen);
296 vl = exif_get_long (entry->data, entry->order); 302 vl = exif_get_long (entry->data, entry->order);
297 if ((vl & 0xF0F0F0F0) == 0x30303030) { 303 if ((vl & 0xF0F0F0F0) == 0x30303030) {
298 memcpy (v, entry->data, MIN (maxlen, 4)); 304 memcpy (v, entry->data, MIN (maxlen, 4));
299 } else { 305 } else {
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after
362 case MNOTE_OLYMPUS_TAG_LENSTEMPERATURE: 368 case MNOTE_OLYMPUS_TAG_LENSTEMPERATURE:
363 CF (entry->format, EXIF_FORMAT_SSHORT, v, maxlen); 369 CF (entry->format, EXIF_FORMAT_SSHORT, v, maxlen);
364 CC (entry->components, 1, v, maxlen); 370 CC (entry->components, 1, v, maxlen);
365 vs = exif_get_short (entry->data, entry->order); 371 vs = exif_get_short (entry->data, entry->order);
366 snprintf (v, maxlen, "%hd", vs); 372 snprintf (v, maxlen, "%hd", vs);
367 break; 373 break;
368 case MNOTE_NIKON_TAG_WHITEBALANCERB: 374 case MNOTE_NIKON_TAG_WHITEBALANCERB:
369 CF (entry->format, EXIF_FORMAT_RATIONAL, v, maxlen); 375 CF (entry->format, EXIF_FORMAT_RATIONAL, v, maxlen);
370 CC (entry->components, 4, v, maxlen); 376 CC (entry->components, 4, v, maxlen);
371 vr = exif_get_rational (entry->data, entry->order); 377 vr = exif_get_rational (entry->data, entry->order);
372 » » r = (double)vr.numerator / vr.denominator; 378 » » r = R2D(vr);
373 vr = exif_get_rational (entry->data+8, entry->order); 379 vr = exif_get_rational (entry->data+8, entry->order);
374 » » b = (double)vr.numerator / vr.denominator; 380 » » b = R2D(vr);
375 snprintf (v, maxlen, _("Red Correction %f, blue Correction %f"), r,b); 381 snprintf (v, maxlen, _("Red Correction %f, blue Correction %f"), r,b);
376 break; 382 break;
377 case MNOTE_NIKON_TAG_MANUALFOCUSDISTANCE: 383 case MNOTE_NIKON_TAG_MANUALFOCUSDISTANCE:
378 CF (entry->format, EXIF_FORMAT_RATIONAL, v, maxlen); 384 CF (entry->format, EXIF_FORMAT_RATIONAL, v, maxlen);
379 CC (entry->components, 1, v, maxlen); 385 CC (entry->components, 1, v, maxlen);
380 vr = exif_get_rational (entry->data, entry->order); 386 vr = exif_get_rational (entry->data, entry->order);
381 » » if (vr.numerator) { 387 » » if (!vr.numerator || !vr.denominator) {
382 » » » r = (double)vr.numerator / vr.denominator; 388 » » » strncpy (v, _("No manual focus selection"), maxlen);
389 » » } else {
390 » » » r = R2D(vr);
383 snprintf (v, maxlen, _("%2.2f meters"), r); 391 snprintf (v, maxlen, _("%2.2f meters"), r);
384 } else {
385 strncpy (v, _("No manual focus selection"), maxlen);
386 } 392 }
387 break; 393 break;
388 case MNOTE_NIKON_TAG_SENSORPIXELSIZE: 394 case MNOTE_NIKON_TAG_SENSORPIXELSIZE:
389 CF (entry->format, EXIF_FORMAT_RATIONAL, v, maxlen); 395 CF (entry->format, EXIF_FORMAT_RATIONAL, v, maxlen);
390 CC (entry->components, 2, v, maxlen); 396 CC (entry->components, 2, v, maxlen);
391 vr = exif_get_rational (entry->data, entry->order); 397 vr = exif_get_rational (entry->data, entry->order);
392 vr2 = exif_get_rational (entry->data+8, entry->order); 398 vr2 = exif_get_rational (entry->data+8, entry->order);
393 » » r = (double)vr.numerator / vr.denominator; 399 » » r = R2D(vr);
394 » » b = (double)vr2.numerator / vr2.denominator; 400 » » b = R2D(vr2);
395 snprintf (v, maxlen, "%2.2f x %2.2f um", r, b); 401 snprintf (v, maxlen, "%2.2f x %2.2f um", r, b);
396 break; 402 break;
397 case MNOTE_NIKON_TAG_BRACKETING: 403 case MNOTE_NIKON_TAG_BRACKETING:
398 CF2 (entry->format, EXIF_FORMAT_BYTE, EXIF_FORMAT_SHORT, v, maxl en); 404 CF2 (entry->format, EXIF_FORMAT_BYTE, EXIF_FORMAT_SHORT, v, maxl en);
399 CC (entry->components, 1, v, maxlen); 405 CC (entry->components, 1, v, maxlen);
400 if (EXIF_FORMAT_SHORT == entry->format) { 406 if (EXIF_FORMAT_SHORT == entry->format) {
401 vs = exif_get_short (entry->data, entry->order); 407 vs = exif_get_short (entry->data, entry->order);
402 } else { 408 } else {
403 vs = entry->data[0]; 409 vs = entry->data[0];
404 } 410 }
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
440 if (items[i].elem[j].index != vs) { 446 if (items[i].elem[j].index != vs) {
441 snprintf (v, maxlen, _("Unknown value %hi"), vs); 447 snprintf (v, maxlen, _("Unknown value %hi"), vs);
442 break; 448 break;
443 } 449 }
444 strncpy (v, _(items[i].elem[j].string), maxlen); 450 strncpy (v, _(items[i].elem[j].string), maxlen);
445 break; 451 break;
446 case MNOTE_OLYMPUS_TAG_DIGIZOOM: 452 case MNOTE_OLYMPUS_TAG_DIGIZOOM:
447 if (entry->format == EXIF_FORMAT_RATIONAL) { 453 if (entry->format == EXIF_FORMAT_RATIONAL) {
448 CC (entry->components, 1, v, maxlen); 454 CC (entry->components, 1, v, maxlen);
449 vr = exif_get_rational (entry->data, entry->order); 455 vr = exif_get_rational (entry->data, entry->order);
450 » » » if (!vr.numerator) { 456 » » » if (!vr.numerator || !vr.denominator) {
451 strncpy (v, _("None"), maxlen); 457 strncpy (v, _("None"), maxlen);
452 } else { 458 } else {
453 » » » » r = (double)vr.numerator / vr.denominator; 459 » » » » r = R2D(vr);
454 snprintf (v, maxlen, "%2.2f", r); 460 snprintf (v, maxlen, "%2.2f", r);
455 } 461 }
456 break; 462 break;
457 } 463 }
458 /* fall through to handle SHORT version of this tag */ 464 /* fall through to handle SHORT version of this tag */
459 case MNOTE_NIKON_TAG_LENSTYPE: 465 case MNOTE_NIKON_TAG_LENSTYPE:
460 case MNOTE_NIKON_TAG_FLASHUSED: 466 case MNOTE_NIKON_TAG_FLASHUSED:
461 case MNOTE_NIKON1_TAG_QUALITY: 467 case MNOTE_NIKON1_TAG_QUALITY:
462 case MNOTE_NIKON1_TAG_COLORMODE: 468 case MNOTE_NIKON1_TAG_COLORMODE:
463 case MNOTE_NIKON1_TAG_IMAGEADJUSTMENT: 469 case MNOTE_NIKON1_TAG_IMAGEADJUSTMENT:
(...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after
558 break; 564 break;
559 } 565 }
560 break; 566 break;
561 case MNOTE_NIKON_TAG_LENS: 567 case MNOTE_NIKON_TAG_LENS:
562 CF (entry->format, EXIF_FORMAT_RATIONAL, v, maxlen); 568 CF (entry->format, EXIF_FORMAT_RATIONAL, v, maxlen);
563 CC (entry->components, 4, v, maxlen); 569 CC (entry->components, 4, v, maxlen);
564 { 570 {
565 double c,d; 571 double c,d;
566 unsigned long a,b; 572 unsigned long a,b;
567 vr = exif_get_rational (entry->data, entry->order); 573 vr = exif_get_rational (entry->data, entry->order);
568 » » » a = vr.numerator / vr.denominator; 574 » » » a = R2L(vr);
569 vr = exif_get_rational (entry->data+8, entry->order); 575 vr = exif_get_rational (entry->data+8, entry->order);
570 » » » b = vr.numerator / vr.denominator; 576 » » » b = R2L(vr);
571 vr = exif_get_rational (entry->data+16, entry->order); 577 vr = exif_get_rational (entry->data+16, entry->order);
572 » » » c = (double)vr.numerator / vr.denominator; 578 » » » c = R2D(vr);
573 vr = exif_get_rational (entry->data+24, entry->order); 579 vr = exif_get_rational (entry->data+24, entry->order);
574 » » » d = (double)vr.numerator / vr.denominator; 580 » » » d = R2D(vr);
575 snprintf (v, maxlen, "%ld-%ldmm 1:%3.1f - %3.1f",a,b,c,d ); 581 snprintf (v, maxlen, "%ld-%ldmm 1:%3.1f - %3.1f",a,b,c,d );
576 } 582 }
577 break; 583 break;
578 584
579 /* Olympus */ 585 /* Olympus */
580 case MNOTE_OLYMPUS_TAG_MODE: 586 case MNOTE_OLYMPUS_TAG_MODE:
581 CF (entry->format, EXIF_FORMAT_LONG, v, maxlen); 587 CF (entry->format, EXIF_FORMAT_LONG, v, maxlen);
582 CC (entry->components, 3, v, maxlen); 588 CC (entry->components, 3, v, maxlen);
583 vl = exif_get_long (entry->data, entry->order); 589 vl = exif_get_long (entry->data, entry->order);
584 switch (vl) { 590 switch (vl) {
(...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after
672 for (i=0; i < (int)entry->components; ++i) { 678 for (i=0; i < (int)entry->components; ++i) {
673 vl = exif_get_long (entry->data+4*i, entry->order); 679 vl = exif_get_long (entry->data+4*i, entry->order);
674 sprintf (buf, "%lu ", (unsigned long)vl); 680 sprintf (buf, "%lu ", (unsigned long)vl);
675 strncat (v, buf, maxlen - strlen (v)); 681 strncat (v, buf, maxlen - strlen (v));
676 } 682 }
677 break; 683 break;
678 case MNOTE_OLYMPUS_TAG_FOCUSDIST: 684 case MNOTE_OLYMPUS_TAG_FOCUSDIST:
679 CF (entry->format, EXIF_FORMAT_RATIONAL, v, maxlen); 685 CF (entry->format, EXIF_FORMAT_RATIONAL, v, maxlen);
680 CC (entry->components, 1, v, maxlen); 686 CC (entry->components, 1, v, maxlen);
681 vr = exif_get_rational (entry->data, entry->order); 687 vr = exif_get_rational (entry->data, entry->order);
682 » » if (vr.numerator == 0) { 688 » » if (!vr.numerator || !vr.denominator) {
683 strncpy (v, _("Unknown"), maxlen); 689 strncpy (v, _("Unknown"), maxlen);
684 } 690 }
685 else { 691 else {
686 unsigned long tmp = vr.numerator / vr.denominator; 692 unsigned long tmp = vr.numerator / vr.denominator;
687 snprintf (v, maxlen, "%li mm", tmp); 693 snprintf (v, maxlen, "%li mm", tmp);
688 } 694 }
689 break; 695 break;
690 case MNOTE_OLYMPUS_TAG_WBALANCE: 696 case MNOTE_OLYMPUS_TAG_WBALANCE:
691 CF (entry->format, EXIF_FORMAT_SHORT, v, maxlen); 697 CF (entry->format, EXIF_FORMAT_SHORT, v, maxlen);
692 CC (entry->components, 2, v, maxlen); 698 CC (entry->components, 2, v, maxlen);
(...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after
783 CC (entry->components, 1, v, maxlen); 789 CC (entry->components, 1, v, maxlen);
784 vl = exif_get_long (entry->data, entry->order); 790 vl = exif_get_long (entry->data, entry->order);
785 snprintf (v, maxlen, "%li", (long int) vl); 791 snprintf (v, maxlen, "%li", (long int) vl);
786 break; 792 break;
787 case EXIF_FORMAT_RATIONAL: 793 case EXIF_FORMAT_RATIONAL:
788 CC (entry->components, 1, v, maxlen); 794 CC (entry->components, 1, v, maxlen);
789 vr = exif_get_rational (entry->data, entry->order); 795 vr = exif_get_rational (entry->data, entry->order);
790 if (!vr.denominator) { 796 if (!vr.denominator) {
791 strncpy (v, _("Infinite"), maxlen); 797 strncpy (v, _("Infinite"), maxlen);
792 } else { 798 } else {
793 » » » » r = (double)vr.numerator / vr.denominator; 799 » » » » r = R2D(vr);
794 snprintf (v, maxlen, "%2.3f", r); 800 snprintf (v, maxlen, "%2.3f", r);
795 } 801 }
796 break; 802 break;
797 case EXIF_FORMAT_SRATIONAL: 803 case EXIF_FORMAT_SRATIONAL:
798 CC (entry->components, 1, v, maxlen); 804 CC (entry->components, 1, v, maxlen);
799 vsr = exif_get_srational (entry->data, entry->order); 805 vsr = exif_get_srational (entry->data, entry->order);
800 if (!vsr.denominator) { 806 if (!vsr.denominator) {
801 strncpy (v, _("Infinite"), maxlen); 807 strncpy (v, _("Infinite"), maxlen);
802 } else { 808 } else {
803 » » » » r = (double)vsr.numerator / vsr.denominator; 809 » » » » r = R2D(vsr);
804 snprintf (v, maxlen, "%2.3f", r); 810 snprintf (v, maxlen, "%2.3f", r);
805 } 811 }
806 break; 812 break;
807 case EXIF_FORMAT_UNDEFINED: 813 case EXIF_FORMAT_UNDEFINED:
808 default: 814 default:
809 snprintf (v, maxlen, _("%i bytes unknown data: "), 815 snprintf (v, maxlen, _("%i bytes unknown data: "),
810 entry->size); 816 entry->size);
811 for (i = 0; i < (int)entry->size; i++) { 817 for (i = 0; i < (int)entry->size; i++) {
812 sprintf (buf, "%02x", entry->data[i]); 818 sprintf (buf, "%02x", entry->data[i]);
813 strncat (v, buf, maxlen - strlen (v)); 819 strncat (v, buf, maxlen - strlen (v));
814 } 820 }
815 break; 821 break;
816 } 822 }
817 break; 823 break;
818 } 824 }
819 825
820 return (v); 826 return (v);
821 } 827 }
OLDNEW
« no previous file with comments | « libexif/sources/libexif/fuji/mnote-fuji-tag.c ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698