bdk-blender/source/blender/imbuf
Jesse Yurkovich 1ee4e6bf31 Fix T89542: Crash when loading certain .hdr files
The direct cause of the bug in question was passing in the raw memory
buffer to sscanf. It should be called with a null-terminated buffer;
which isn't guaranteed when blindly trusting the file data.

When attempting to fuzz this code path, a variety of other crashes were
discovered and fixed.

Differential Revision: https://developer.blender.org/D11952
2022-02-21 10:54:40 +01:00
..
intern Fix T89542: Crash when loading certain .hdr files 2022-02-21 10:54:40 +01:00
CMakeLists.txt Cleanup: Remove deprecated variables and functions calls from our ffmpeg code 2021-06-30 09:32:06 +02:00
IMB_colormanagement.h Cleanup: Clang-Tidy readability-inconsistent-declaration-parameter-name fix 2020-09-04 21:04:16 +02:00
IMB_imbuf_types.h Cleanup: spelling, doxygen comment formatting 2021-03-21 13:18:20 +11:00
IMB_imbuf.h VSE: Fix audaspace not reading ffmpeg files with start offset correctly 2021-08-23 11:21:31 +02:00
IMB_metadata.h Cleanup: correct spelling in comments 2021-02-05 16:23:34 +11:00
IMB_moviecache.h Code Style: use "#pragma once" in source directory 2020-08-07 09:50:34 +02:00
IMB_thumbs.h UI: Remove Blend Thumb Passepartout 2021-02-22 11:52:19 -08:00
readme.txt Spelling fixes in comments and descriptions, patch by luzpaz 2019-07-31 14:27:35 +02:00

The following 4 steps to adding a new image format to blender, its
probably easiest to look at the png code for a clean clear example,
animation formats are a bit more complicated but very similar:

Step 1:
create a new file named after the format for example lets say we were
creating an openexr read/writer  use openexr.c
It should contain functions to match the following prototypes:

struct ImBuf *imb_loadopenexr(unsigned char *mem,int size,int flags);
/* Use one of the following depending on what's easier for your file format */
short imb_saveopenexr(struct ImBuf *ibuf, FILE myfile, int flags);
short imb_saveopenexr(struct ImBuf *ibuf, char *myfile, int flags);

/* Used to test if its the correct format
int IMB_is_openexr(void *buf);

Step 2:
Add your hooks to read and write the image format these go in
	writeimage.c and readimage.c  just look at how the others are done

Step 3:
Add in IS_openexr to blender/source/blender/imbuf/IMB_imbuf_types.h
Add in R_openexr to source/blender/makesdna/DNA_scene_types.h

Step 4:
Add your hooks to the gui.
source/blender/src/buttons_scene.c
source/blender/src/toets.c
source/blender/src/writeimage.c

Step 5:
edit the following files:
blender/source/blender/imbuf/intern/util.c
blender/source/blender/src/filesel.c
blender/source/blender/src/screendump.c
and add your extension so that your format gets recognized in the thumbnails.

Step 6:
Alter the build process:
For cmake you need to edit blender/source/blender/imbuf/CMakeLists.txt
and add in your additional files to source_files.
If you have any external library info you will also need to add that
to the various build processes.

Step 7:
Its also good to add your image format to:
makepicstring in blender/source/blender/blenkernel/intern/image.c