diff options
author | Akira Kakuto <kakuto@fuk.kindai.ac.jp> | 2015-07-04 11:48:58 +0000 |
---|---|---|
committer | Akira Kakuto <kakuto@fuk.kindai.ac.jp> | 2015-07-04 11:48:58 +0000 |
commit | 0b74aeb284799e1ac419f313e76d6ea86e113512 (patch) | |
tree | 82a8c441563e3d60498a666fcd19863d5d7dcc99 /Build/source/texk/dvipdfm-x/jpegimage.c | |
parent | 1b54746a7a7087af138fe21c002cd967fdaf6597 (diff) |
S. Hirata updates a few files.
git-svn-id: svn://tug.org/texlive/trunk@37757 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Build/source/texk/dvipdfm-x/jpegimage.c')
-rw-r--r-- | Build/source/texk/dvipdfm-x/jpegimage.c | 62 |
1 files changed, 33 insertions, 29 deletions
diff --git a/Build/source/texk/dvipdfm-x/jpegimage.c b/Build/source/texk/dvipdfm-x/jpegimage.c index 863c6949b95..82179e0e947 100644 --- a/Build/source/texk/dvipdfm-x/jpegimage.c +++ b/Build/source/texk/dvipdfm-x/jpegimage.c @@ -129,34 +129,34 @@ typedef enum { struct JPEG_APPn_JFIF /* APP0 */ { - unsigned short version; - unsigned char units; /* 0: only aspect ratio + uint16_t version; + uint8_t units; /* 0: only aspect ratio * 1: dots per inch * 2: dots per cm */ - unsigned short Xdensity; - unsigned short Ydensity; - unsigned char Xthumbnail; - unsigned char Ythumbnail; + uint16_t Xdensity; + uint16_t Ydensity; + uint8_t Xthumbnail; + uint8_t Ythumbnail; unsigned char *thumbnail; /* Thumbnail data. */ }; struct JPEG_APPn_ICC /* APP2 */ { - unsigned char seq_id; - unsigned char num_chunks; + uint8_t seq_id; + uint8_t num_chunks; unsigned char *chunk; /* Length of ICC profile data in this chunk. */ - unsigned short length; + size_t length; }; struct JPEG_APPn_Adobe /* APP14 */ { - unsigned short version; - unsigned short flag0; - unsigned short flag1; - unsigned char transform; /* color transform code */ + uint16_t version; + uint16_t flag0; + uint16_t flag1; + uint8_t transform; /* color transform code */ }; struct JPEG_APPn_XMP /* APP1 */ @@ -164,7 +164,7 @@ struct JPEG_APPn_XMP /* APP1 */ unsigned char *packet; /* XMP packet */ /* Length of XMP packet data */ - unsigned short length; + size_t length; }; struct JPEG_ext @@ -177,11 +177,11 @@ struct JPEG_ext #define MAX_COUNT 1024 struct JPEG_info { - unsigned short height; - unsigned short width; + uint16_t height; + uint16_t width; - unsigned char bits_per_component; - unsigned char num_components; + uint8_t bits_per_component; + uint8_t num_components; double xdpi; double ydpi; @@ -608,8 +608,8 @@ read_exif_bytes (unsigned char **pp, int n, int endian) #define JPEG_EXIF_TAG_XRESOLUTION 282 #define JPEG_EXIF_TAG_YRESOLUTION 283 #define JPEG_EXIF_TAG_RESOLUTIONUNIT 296 -static unsigned short -read_APP1_Exif (struct JPEG_info *j_info, FILE *fp, unsigned short length) +static size_t +read_APP1_Exif (struct JPEG_info *j_info, FILE *fp, size_t length) { /* this doesn't save the data, just reads the tags we need */ /* based on info from http://www.exif.org/Exif2-2.PDF */ @@ -630,6 +630,8 @@ read_APP1_Exif (struct JPEG_info *j_info, FILE *fp, unsigned short length) while ((p < endptr) && (*p == 0)) p++; + if (p + 8 >= endptr) + goto err; /* TIFF header */ tiff_header = p; if ((p[0] == 'M') && (p[1] == 'M')) @@ -650,6 +652,8 @@ read_APP1_Exif (struct JPEG_info *j_info, FILE *fp, unsigned short length) offset = read_exif_bytes(&p, 4, endian); p = tiff_header + offset; + if (p + 2 >= endptr) + goto err; num_fields = read_exif_bytes(&p, 2, endian); while (num_fields-- > 0 && p < endptr) { int tag, type; @@ -742,11 +746,11 @@ err: return length; } -static unsigned short +static size_t read_APP0_JFIF (struct JPEG_info *j_info, FILE *fp) { struct JPEG_APPn_JFIF *app_data; - unsigned short thumb_data_len; + size_t thumb_data_len; app_data = NEW(1, struct JPEG_APPn_JFIF); app_data->version = get_unsigned_pair(fp); @@ -783,8 +787,8 @@ read_APP0_JFIF (struct JPEG_info *j_info, FILE *fp) return (9 + thumb_data_len); } -static unsigned short -read_APP0_JFXX (FILE *fp, unsigned short length) +static size_t +read_APP0_JFXX (FILE *fp, size_t length) { get_unsigned_byte(fp); /* Extension Code: @@ -800,8 +804,8 @@ read_APP0_JFXX (FILE *fp, unsigned short length) return length; } -static unsigned short -read_APP1_XMP (struct JPEG_info *j_info, FILE *fp, unsigned short length) +static size_t +read_APP1_XMP (struct JPEG_info *j_info, FILE *fp, size_t length) { struct JPEG_APPn_XMP *app_data; @@ -815,8 +819,8 @@ read_APP1_XMP (struct JPEG_info *j_info, FILE *fp, unsigned short length) return length; } -static unsigned short -read_APP2_ICC (struct JPEG_info *j_info, FILE *fp, unsigned short length) +static size_t +read_APP2_ICC (struct JPEG_info *j_info, FILE *fp, size_t length) { struct JPEG_APPn_ICC *app_data; @@ -836,7 +840,7 @@ static int JPEG_copy_stream (struct JPEG_info *j_info, pdf_obj *stream, FILE *fp) { JPEG_marker marker; - long length; + size_t length; int found_SOFn, count; #define SKIP_CHUNK(j,c) ((j)->skipbits[(c) / 8] & (1 << (7 - (c) % 8))) |