YAMAMOTO Takashi
f1dd37fbdb
quirc_resize: Make this a bit more careful about integer overflows
...
Also, avoid malloc(0), which is not too portable.
2021-05-11 11:05:58 +09:00
YAMAMOTO Takashi
772cd3e73f
Improve stack usage for flood filling
...
* Make flood filling logic iterative (vs recursive)
I basically tried one-to-one conversions here to avoid mistakes.
probably it has a room for later optimizations.
* Use explicit malloc (vs variables on stack) to allocate the work area.
* Estimate the amount of memory for the work area dynamically
from the image size, instead of using a constant FLOOD_FILL_MAX_DEPTH,
which is too big in the most cases.
2021-05-11 11:05:58 +09:00
Daniel Beer
c6fc67088a
Merge pull request #103 from yamt/otsu
...
Fix possible overflows in otsu()
2021-05-11 13:24:56 +12:00
Daniel Beer
db49540f36
Merge pull request #107 from yamt/shrink-datastream
...
Shrink struct datastream by borrowing the user buffer
2021-05-11 10:30:58 +12:00
YAMAMOTO Takashi
21b7581b04
Shrink struct datastream by borrowing the user buffer
2021-04-23 13:40:37 +09:00
YAMAMOTO Takashi
65379a7c39
finder_scan: Improve capstone detection on small images
...
When using small captured images, I somehow frequently see failures
to recognize a capstone due to rounding errors.
eg. when pb[] = {2 3 8 3 2}.
This commit tries to improve it by using fixed-point arithmetics.
The scaling factor was chosen somehow arbitrary. A moderate scaling
should be enough.
2021-04-23 10:36:22 +09:00
YAMAMOTO Takashi
734258c775
finder_scan: constify the "check" array
2021-04-23 10:36:22 +09:00
YAMAMOTO Takashi
02ed1066ba
test_grouping: use unsigned variables where it makes more sense
2021-04-23 10:36:22 +09:00
YAMAMOTO Takashi
ea9b6ee5ef
otsu: Use unsigned for the pixel numbers
...
Because singed numbers don't make sense here.
2021-04-08 13:38:30 +09:00
YAMAMOTO Takashi
de68db7b69
otsu: Use double for weighted sums
...
My phone camera produces 12M-pixel images.
They can easily overflow an int.
2021-04-08 13:38:30 +09:00
Claudio Felber
4bc17cf8c6
Optimize quirc_flip()
2020-09-22 12:14:09 +02:00
Claudio Felber
5beb59e3b4
Support horizontally flipped QR-codes according to ISO 18004:2015
2020-09-21 16:54:55 +02:00
Claudio Felber
963d6ed126
Fix stack corruption and bus errors while scanning oversized QR codes
2020-09-15 00:51:41 +02:00
Alexandre Perrin
a0b41121e4
Refactored some c99 features
...
Fixes #68
2020-02-27 20:40:23 +01:00
Alexandre Perrin
026485bdc6
missing <limits.h> header
2019-09-25 11:10:43 +02:00
Alexandre Perrin
bf397f0794
Merge pull request #57 from kAworu/cosmetic
...
define a QUIRC_PIXEL_ALIAS_IMAGE constant to explicit conditional path
2019-09-25 10:59:08 +02:00
Alexandre Perrin
74459b9f59
Don't assume that sizeof(int) == sizeof(int32_t)
...
See https://github.com/dlbeer/quirc/pull/59#discussion_r320307589
2019-09-25 10:57:38 +02:00
Sushrut Shringarputale
26d2402655
Fixes issue #60
2019-09-09 23:09:20 -04:00
Sushrut Shringarputale
ed833132d5
Fix some compile-time issues for better production usability
...
Fixed up some type coercion and uninitialized variable instances for
better production code usability.
2019-08-20 09:50:39 -07:00
Alexandre Perrin
f700e456b4
define a QUIRC_PIXEL_ALIAS_IMAGE constant to explicit conditional path
...
Before this patch, the "sizeof dance" was confusing, fix #54 .
2019-07-02 09:22:25 +02:00
Daniel Beer
5d71b1853e
identify: make otsu() static.
2019-05-02 15:56:35 +12:00
Claudio Felber
766f79ce7c
Use const struct quirc parameter in otsu() function and fix tabs
2019-04-30 18:44:59 +02:00
Claudio Felber
96a5a380fb
Remove quirc.row_average and associated code
...
quirc.row_average was used by the former threshold function and has
become obsolete with the introduction of the Otsu threshold function.
2019-04-30 18:43:57 +02:00
Claudio Felber
97ffaabfb5
Replace existing threshold function with Otsu threshold algorithm
2019-04-30 13:02:11 +02:00
Alexandre Perrin
d3780f3e6f
Warning comment improvement.
2017-06-11 10:19:31 +02:00
Alexandre Perrin
90371f36a0
threshold() uses now the row_average member of struct quirc.
2017-06-11 10:08:58 +02:00
Alexandre Perrin
21f6863577
Added a row_average member to struct quirc.
...
Prep to remove the VLA from threshold()
2017-06-11 10:08:58 +02:00
Daniel Beer
7b26f6e193
Merge pull request #39 from kAworu/quirc_resize.fix
...
Fix a potential use-after-free on quirc_resize failure.
2017-06-10 14:02:40 +12:00
Alexandre Perrin
971c9d4e8c
refactor quirc_resize
...
So that the given quirc struct is never invalid once we return to the
caller.
2017-06-09 22:12:06 +02:00
Alexandre Perrin
1f9edb0b84
Fix a potential use-after-free on quirc_resize failure.
...
Before this patch, in the event of `q->image` reallocation success but
`q->pixels` failure, `q->image` would point to a freed memory.
After this patch, once quirc_resize() returns, `q->image` consistently
point to a memory address that can be freed.
There is still an inconsistency left in the example codepath: `q->{h,w}`
would hold the "old" values, while `q->image` allocated size would be
based in the requested width/height; hence the comment update about the
state of the QR-code recognizer (it should only be passed to
quirc_destroy()).
2017-06-07 19:37:14 +02:00
Alexandre Perrin
a858ec4896
Fixes warnings emitted by gcc -Wold-style-declaration
2017-06-07 10:24:43 +02:00
Alexandre Perrin
2528ea3955
Comment fix
...
Bad copy-pasta from
http://www.thonky.com/qr-code-tutorial/kanji-mode-encoding
2017-05-30 19:23:42 +02:00
Alexandre Perrin
e16c02e226
Fix Kanji decoding.
...
Before this patch, Kanji decoding was broken.
2017-05-30 18:52:31 +02:00
Daniel Beer
3c31aa0987
Fix potential leak on allocation failure in quirc_resize().
2017-05-18 19:29:02 +12:00
Edward Cragg
c50a89276f
identify: fix warning
...
Fix the following warning when compiling with GCC 6:
lib/identify.c: In function ‘quirc_end’:
lib/identify.c:430:6: warning: ‘last_color’ may be used uninitialized in this function [-Wmaybe-uninitialized]
int last_color;
^~~~~~~~~~
2017-04-30 10:42:14 +01:00
Michael Bradshaw
e0a5f5fd3f
Fix documentation regarding cell_bitmap indexing
2017-04-25 04:27:17 -07:00
Daniel Beer
84eccbf077
Fix out-of-bounds read in fitness_all().
2017-03-30 18:05:49 +13:00
Philippe Groarke
64a4e58543
quirc.h : Fix C++ function name mangling with extern C.
2017-02-16 14:32:18 -05:00
Daniel Beer
59182ef1cd
Deinterleave blocks correct.
...
Use explicit small-block count. Derived value using greedy calculation
wasn't correct in many cases.
2016-12-28 15:37:18 +13:00
Daniel Beer
fccbbce758
version_db.c: fix basic errors.
2016-12-28 14:09:06 +13:00
Daniel Beer
88774dc6cf
decode.c: fix count bit-width on alphanumeric payloads.
2016-11-17 11:37:55 +13:00
Alexandre Perrin
6f0ed74aa2
Comment typo.
2016-10-04 11:13:49 +02:00
Alexandre Perrin
93adbb0b11
Avoid division by zero.
...
Before this patch, small images (i.e. 7x7 pixels or less) could trigger
SIGFPE because of a (integer) division by zero.
2016-10-04 11:10:55 +02:00
Daniel Beer
87e79e769b
Fix Reed-Solomon decoder.
...
Calculate the correct number of syndromes, and fix calculation of the
error locator polynomial. Many QR codes with logos in the middle should
now work.
2016-09-23 14:34:07 +12:00
Daniel Beer
ab341691c9
Add support for ECI decoding.
...
ECI values are decoded and stored in the eci field of struct quirc_data.
Constants of the form QUIRC_ECI_* are defined in quirc.h.
2016-09-23 09:50:59 +12:00
Alexandre Perrin
3a6efb3d84
Large images decoding support
...
Fix #2 , this patch makes large images support a compile time option by
allowing QUIRC_MAX_REGIONS to be tuned via CFLAGS up to 65534 (current
default is 254).
2016-07-15 14:40:40 +02:00
Daniel Beer
42c79481e7
decode: support multiple data segments.
...
Previously, the payload was assumed to consist of one large data
segment. Now, multiple segments of different types may be concatenated
together. The data type reported is the highest data type encountered
while decoding.
2013-05-29 10:26:13 +12:00
Daniel Beer
daf6d7c90b
decode: fix reversed tuples in numeric decoder.
2013-05-29 09:40:46 +12:00
Daniel Beer
0335fabf97
Fix decoding of numeric and alphanumeric data types.
...
If the number of characters in the stream isn't a multiple of the full
tuple size, the remaining characters are encoded in a special short
tuple.
2013-05-14 09:25:05 +12:00
Daniel Beer
8d0eb68255
test_neighbours: fix warnings in static analyzer.
...
Coverity complains that a negative value of best_v might be passed to
record_qr_grid().
Fix supplied by Harald Eilertsen (http://github.com/snake66/ ).
2013-02-02 18:07:22 +13:00