Commit Graph

203 Commits

Author SHA1 Message Date
themanagainstthetank
7e989db555 update stb_image.h
int raw_data[4] to 0, or the compiler bugs
2017-01-16 18:12:31 +08:00
Sean Barrett
96620a3a54 update version numbers 2017-01-16 00:51:24 -08:00
Sean Barrett
dead3815e2 credits 2017-01-16 00:05:58 -08:00
Sean Barrett
28c24f7b83 Merge branch 'fix-truncation' of https://github.com/sammyhw/stb into working 2017-01-15 23:58:26 -08:00
Sean Barrett
48710234f2 credits; 1/2/4-bit png fix; easy font spacing; NO_STDIO in image_write 2017-01-15 23:57:53 -08:00
sammyhw
ec9db6f84b allow for all 16 bits 2016-12-15 23:49:19 -05:00
Sean Barrett
b61b7a74fa update version info 2016-12-04 05:40:21 -08:00
Sean Barrett
7bcaa93a76 Merge branch 'master' of https://github.com/Zelex/stb into merging
Also add more credits
Also fix linking multiple copies with STB_IMAGE_STATIC

Conflicts:
	stb_image.h
2016-12-04 05:38:47 -08:00
Sean Barrett
7759a2a93d fix "misleading indentation" gcc warning 2016-12-04 05:25:24 -08:00
Sean Barrett
ae241feec4 Merge branch 'stb_img_overflows' of https://github.com/rygorous/stb into working
Conflicts:
	stb_image.h
2016-12-04 05:20:57 -08:00
Sean Barrett
7736399517 return 16-bit PSDs through 16-bit API (untested) 2016-12-04 05:13:58 -08:00
Sean Barrett
e0700d8e2c 16-bit png changes 2016-11-29 04:13:17 -08:00
Sean Barrett
239a6718e1 rename stbi_load parameters to reduce confusion 2016-11-29 03:03:07 -08:00
jon
2a170daee5 warning fixes, more RGBE fix 2016-11-28 16:24:11 -06:00
jon
a2defc3d7a added support for RGBE header HDR files 2016-11-28 16:05:39 -06:00
Fabian Giesen
6b66033e18 stb_image: Fix memory leak and missing out-of-mem check.
stbi__process_frame_header had two bugs when dealing with progressive
JPEGs:
1. when malloc failed allocating raw_data, previous components'
   raw_coeff didn't get freed
2. no out-of-memory check in raw_coeff allocation

Fix both and share a bit more cleanup code in general.
2016-10-22 00:29:37 -07:00
Fabian Giesen
62f372754f stb_image: Fix HDR/PSD RLE decoders.
Runs need to be bounds checked.

Fixes issues #315, #317.
2016-10-22 00:29:37 -07:00
Fabian Giesen
02190634c2 stb_image: Overflow checking for image allocs.
Adds some helpers that check whether a product of multiple
factors (that need to be non-negative: this is enforced)
summed with another non-negative value overflows when
performed as int. Since stb_image mostly works in ints,
this seems like the safest route. Limits size of images
to 2GB but several of the decoders already enforce this
limit (or even lower ones).

Also adds wrappers for malloc that combine a mul-add-with-
overflow-check with the actual malloc, and return NULL
on failure. Then use them when allocating something that
is the product of multiple factors.

For image formats, also add a top-level "is this too big?"
check that gives a more useful error message; otherwise,
the failed mallocs result in an "out of memory" error.
The idea is that the top-level checks should be the primary
way to catch these bugs (and produce a useful error message).
But a misleading error message is still vastly preferable to
a buffer overflow exploit.

Fixes issues #310, #313, #314, #318. (Verified with the
provided test images)

Along the way, this fixes a previously unnoticed bug in
ldr_to_hdr / hdr_to_ldr (missing NULL check); these functions
are called with the result of an image decoder, so NULLs can
definitely happen.

Another bug noticed along the way is that handling of
interlaced 16-bit PNGs was incorrect. Fixing this (along
with the previous modifications) fixes issue #311.

Yet another bug noticed during this change is that reduce_png
did not check the right pointer during its out of memory
check. Fix that too.
2016-10-22 00:29:37 -07:00
Fabian Giesen
8c8d735eb7 stb_image: More input validation in deflate decoder
Fixes issue #312.
2016-10-22 00:29:37 -07:00
Sean Barrett
fdca443892 fix crash in 2.11 2016-04-02 07:29:34 -07:00
Sean Barrett
6e4154737c update version numbers, documentation, and contributors 2016-04-02 04:51:26 -07:00
Sean Barrett
7a694bdcca re-enable SSE2 code on x64 except with gcc 2016-04-02 04:01:59 -07:00
Sean Barrett
201af99d9f return correct # of channels for PNG 2016-04-02 03:49:46 -07:00
Sean Barrett
591c7f8cb3 remove white matting when loading transparent PSD 2016-04-02 03:44:50 -07:00
Sean Barrett
c03f4b3c2f Merge branch 'patch-1' of https://github.com/kinetiknz/stb 2016-04-02 02:57:34 -07:00
Sean Barrett
097a70ae38 Merge branch 'master' of https://github.com/tulrich/stb 2016-04-02 02:56:39 -07:00
Sean Barrett
a013c036f3 initialize bmp mr/mg/mb/ma properly 2016-04-02 02:54:25 -07:00
Sean Barrett
406d537b41 Merge branch 'initial_png_16bpc' of https://github.com/socks-the-fox/stb into working 2016-04-02 02:41:16 -07:00
Sean Barrett
efdfbb3c7c Merge branch 'master' into working 2016-04-01 21:43:22 -07:00
Sean Barrett
50479cb07c stb_image: allow jpegs that are rgb not YCrCb 2016-03-26 15:46:59 -07:00
Matthew Gregan
94f2ceac15 Fix typo in stbi__parse_uncompressed_block 2016-03-12 01:55:59 +13:00
Thatcher Ulrich
7e1ee2d386 Allocate large structure using malloc instead of stack. 2016-03-02 15:56:53 -05:00
Thatcher Ulrich
291ad22e84 Replace large stack allocations with dynamic allocations. 2016-03-02 15:31:07 -05:00
Craig Donner
ee6978cb68 Slightly modify the public domain license to keep it in the public domain, but make it clear that even when dedications might not be recognized that the code is still usable. Given that this isn't dual-licensing under a different license, I'm hoping this will be acceptable. 2016-02-25 12:55:44 -08:00
Socks the Fox
eb84b2179b Initial 16 bit per channel PNG support 2016-01-22 12:42:40 -06:00
Sean Barrett
30015ef464 attempt to fix unused var warnings in stb_image 2.09 2016-01-22 04:06:28 -08:00
Sean Barrett
472c4c82a4 update version history 2016-01-16 10:00:19 -08:00
Sean Barrett
ac748cba9b update contributor list, version history, version number 2016-01-16 09:57:04 -08:00
Sean Barrett
82ca643ef3 change previous explicitly-sized realloc support to be new API and unbreak old API 2016-01-16 09:47:22 -08:00
Sean Barrett
853fda6132 Merge branch 'alt_realloc' of https://github.com/romigrou/stb into working 2016-01-16 09:38:13 -08:00
Sean Barrett
c8e50127c5 contributor list 2016-01-16 09:37:34 -08:00
Sean Barrett
32d5e7ca7f Merge branch '16bit-tga' of https://github.com/DanielGibson/stb into working 2016-01-16 08:15:58 -08:00
Sean Barrett
9cb29b6b39 update and reorganize contributor list 2016-01-16 08:13:55 -08:00
Sean Barrett
5746aa023a Merge branch 'stbi_hdr_info_overread' of https://github.com/baldurk/stb into working 2016-01-16 08:05:51 -08:00
Sean Barrett
e30b75af8b update contributor list 2016-01-16 08:05:40 -08:00
Sean Barrett
c7e24f4c4c Merge branch 'master' of https://github.com/svdijk/stb into working 2016-01-16 08:03:22 -08:00
Sean Barrett
1964d53d70 update version number and version history with everything committed to date 2016-01-16 08:01:42 -08:00
Romain Bailly
7e741ffc1e Added the old size as argument to the STBI_REALLOC() and STBIW_REALLOC() macros 2016-01-14 10:34:30 +01:00
Daniel Gibson
87a0396922 stb_image.h: 16 bit TGAs don't really have an alpha channel
I claimed that if the most significant bit of a 16bit pixel is set,
it should be opaque (as is suggested by some sources on the internet),
but implemented the opposite.
If implemented "correctly", lots of 16bit TGAs become invisible.. so I
guess 16bit TGAs aren't really supposed to have an alpha-channel, or at
least most 16bit TGAs (despite having set an "alpha-bit" in the "image
descriptor byte") in the wild don't seem to work like that.

So just assume 16bit non-greyscale TGAs are always STBI_rgb without
an alpha channel.
2015-12-06 05:47:47 +01:00
Daniel Gibson
d235049322 stb_image.h: Fix TGA colormap support
* Calculate correct stb format (incl. proper 16bit support) also when
  using a colormap (palette)
* Create colormap with tga_comp, to correctly support 16bit RGB
  (instead of using tga_palette_bits/8 and just copying the data)
* For TGAs with colormap, the TGA bits per pixel field specifies the
  size of an index to the colormap - the "real" color depth
  of the image is saved in the color map specification's bits per pixel
  field. I think only 8 and 16bit indices make sense (16 should be
  supported, otherwise the colormap length could be u8 instead of u16),
  so I added support for both.
* Helper functions stbi__tga_get_comp() to calculate stb pixelformat and
  stbi__tga_read_rgb16() to read one 16bit pixel and convert it to
  24/32bit RGB(A) - for less duplicate code
2015-12-06 04:33:37 +01:00