966bba02bb
Former-commit-id: bb0468d0f257ff100aa895eb5fe583fb5dfbf900
50 lines
1.6 KiB
Diff
50 lines
1.6 KiB
Diff
diff --git a/jdmarker.c b/jdmarker.c
|
|
index f2a9cc4..2edebc2 100644
|
|
--- a/jdmarker.c
|
|
+++ b/jdmarker.c
|
|
@@ -305,7 +305,7 @@ get_sos (j_decompress_ptr cinfo)
|
|
/* Process a SOS marker */
|
|
{
|
|
INT32 length;
|
|
- int i, ci, n, c, cc;
|
|
+ int i, j, ci, n, c, cc;
|
|
jpeg_component_info * compptr;
|
|
INPUT_VARS(cinfo);
|
|
|
|
@@ -340,7 +340,11 @@ get_sos (j_decompress_ptr cinfo)
|
|
ERREXIT1(cinfo, JERR_BAD_COMPONENT_ID, cc);
|
|
|
|
id_found:
|
|
-
|
|
+ for (j = 0; j < i; j++) {
|
|
+ if (cinfo->cur_comp_info[j] == compptr) {
|
|
+ ERREXIT1(cinfo, JERR_DUP_COMPONENT_ID, cc);
|
|
+ }
|
|
+ }
|
|
cinfo->cur_comp_info[i] = compptr;
|
|
compptr->dc_tbl_no = (c >> 4) & 15;
|
|
compptr->ac_tbl_no = (c ) & 15;
|
|
@@ -480,7 +484,9 @@ get_dht (j_decompress_ptr cinfo)
|
|
*htblptr = jpeg_alloc_huff_table((j_common_ptr) cinfo);
|
|
|
|
MEMCOPY((*htblptr)->bits, bits, SIZEOF((*htblptr)->bits));
|
|
- MEMCOPY((*htblptr)->huffval, huffval, SIZEOF((*htblptr)->huffval));
|
|
+ MEMCOPY((*htblptr)->huffval, huffval, count);
|
|
+
|
|
+ MEMZERO((*htblptr)->huffval + count, SIZEOF( (*htblptr)->huffval) - count);
|
|
}
|
|
|
|
if (length != 0)
|
|
diff --git a/jerror.h b/jerror.h
|
|
index 1cfb2b1..4007c49 100644
|
|
--- a/jerror.h
|
|
+++ b/jerror.h
|
|
@@ -77,6 +77,7 @@ JMESSAGE(JERR_DAC_INDEX, "Bogus DAC index %d")
|
|
JMESSAGE(JERR_DAC_VALUE, "Bogus DAC value 0x%x")
|
|
JMESSAGE(JERR_DHT_INDEX, "Bogus DHT index %d")
|
|
JMESSAGE(JERR_DQT_INDEX, "Bogus DQT index %d")
|
|
+JMESSAGE(JERR_DUP_COMPONENT_ID, "Duplicate component ID")
|
|
JMESSAGE(JERR_EMPTY_IMAGE, "Empty JPEG image (DNL not supported)")
|
|
JMESSAGE(JERR_EMS_READ, "Read from EMS failed")
|
|
JMESSAGE(JERR_EMS_WRITE, "Write to EMS failed")
|