projects
/
openjpeg.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
suppress valgrind error - avoid accessing uninitialized memory in mq encoder
[openjpeg.git]
/
src
/
lib
/
openjp2
/
mqc.c
diff --git
a/src/lib/openjp2/mqc.c
b/src/lib/openjp2/mqc.c
index 7e0f5637bf80470f18f13ef8d8ef10a62ca29879..4e409a7ce23e4427eb1da92cab29ff2d4aed312f 100644
(file)
--- a/
src/lib/openjp2/mqc.c
+++ b/
src/lib/openjp2/mqc.c
@@
-203,13
+203,20
@@
static opj_mqc_state_t mqc_states[47 * 2] = {
*/
static void opj_mqc_byteout(opj_mqc_t *mqc) {
*/
static void opj_mqc_byteout(opj_mqc_t *mqc) {
- if (*mqc->bp == 0xff) {
+ /* avoid accessing uninitialized memory*/
+ if (mqc->bp == mqc->start-1) {
+ mqc->bp++;
+ *mqc->bp = (OPJ_BYTE)(mqc->c >> 19);
+ mqc->c &= 0x7ffff;
+ mqc->ct = 8;
+ }
+ else if (*mqc->bp == 0xff) {
mqc->bp++;
*mqc->bp = (OPJ_BYTE)(mqc->c >> 20);
mqc->c &= 0xfffff;
mqc->ct = 7;
} else {
mqc->bp++;
*mqc->bp = (OPJ_BYTE)(mqc->c >> 20);
mqc->c &= 0xfffff;
mqc->ct = 7;
} else {
- if ((mqc->c & 0x8000000) == 0) {
/* ((mqc->c&0x8000000)==0) CHANGE */
+ if ((mqc->c & 0x8000000) == 0) {
mqc->bp++;
*mqc->bp = (OPJ_BYTE)(mqc->c >> 19);
mqc->c &= 0x7ffff;
mqc->bp++;
*mqc->bp = (OPJ_BYTE)(mqc->c >> 19);
mqc->c &= 0x7ffff;
@@
-395,9
+402,6
@@
void opj_mqc_init_enc(opj_mqc_t *mqc, OPJ_BYTE *bp) {
mqc->c = 0;
mqc->bp = bp - 1;
mqc->ct = 12;
mqc->c = 0;
mqc->bp = bp - 1;
mqc->ct = 12;
- if (*mqc->bp == 0xff) {
- mqc->ct = 13;
- }
mqc->start = bp;
}
mqc->start = bp;
}