Comments (5)
Hi Aaron,
Thank you for putting this in. Yes, it can happen.
The cleanup pass of a HTJ2K codeblock is made up of three sections; in order, they are: the magnitude-sign (MagSgn) section, which is read from the first byte going forward; the MEL section, which is also read forward; and the VLC section, which is read from the last byte going backward.
For convenience, here we read 4 bytes at a time from the VLC section. So if the MagSgn and MEL are short (the MEL section can have 0 bytes), there is the possibility that when we reading from the VLC section, we read from before the first byte of the MagSgn section (i.e., from before the first byte in the codeblock).
This needs to be fixed. Let's keep this issue open until I fix it.
Thank you again.
Kind regards,
Aous.
from openjph.
Great, thanks for the explanation, and for looking into this.
from openjph.
Hi Aaron,
I should have come earlier, but my head is in another project.
I added 8 bytes in front of the buffer. If vlcp->size becomes smaller than -8, an error message will terminate the code. There is an additional 24 bytes of memory before the vlcp->buf field, which are used to store information about the buffer size and the likes; have a look at 'struct coded_lists' in ojph_mem.h if you like.
I could not replicate the issue with valgrind (this is the first time I use it), but since I knew about the possibility, I added the extra space, in addition to the existing 24 bytes. In any case, the code should not read from these 24 bytes.
It can useful to replicate the issue you faced. The bug might be somewhere else. I need more details, so if you have the time, please provide more details. You linked the original ppm file, but I am not very sure what options were used with it. I am also not very sure what options were given to valgrind.
While fiddling with valgrind, I discovered a bug in the encoder, which I totally overlooked in the past. I think I need to add valgrind to the necessary tools in my repertoire.
Thank you for all your help.
Kind regards,
Aous.
from openjph.
Hi Aous,
Thanks a lot for these fixes. Yes, valgrind is a fantastic tool to have in your toolkit.
I will do some more testing, and share the settings I used.
Best,
Aaron
from openjph.
I haven't found any valgrind errors in a while. Closing.
from openjph.
Related Issues (20)
- typo in CMakeLists.txt HOT 1
- ojph_compress support for uppercase file extensions HOT 1
- signed 16bit negative values mismatch in interoperablity test between openjph and kakadu HOT 2
- Incorrect COM marker length HOT 1
- openjph decompression fails HOT 2
- Question : what format to be used to decompress the color HTJ2K compressed imaging data HOT 6
- Build should not fail if SIMD optimizations are enabled and your CPU doesn't support them HOT 2
- Feature: Support ROI based rendering HOT 1
- Sample JPH images, please HOT 5
- Unable to build using MinGW HOT 3
- Apple silicon build error HOT 5
- Support decode/expand a j2c file with just tilepart bytes HOT 2
- Tests fails to pass in version 0.10.4 HOT 2
- Specifying non-standard binary and library directories complicates integration in other projects HOT 1
- Feature Request: Add support for vcpkg HOT 1
- Encode 115x25的YUV444 picture,There is serious distortion. HOT 4
- Automated Testing Improvements HOT 1
- Remove xcode specific files HOT 1
- The block coder should be usable without pulling in the rest of OpenJPH HOT 6
- Removing the ojph_ prefix. HOT 6
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from openjph.