1.80.0:
* Improve bmp handling of 1 bpp images and sanity checking of params.
* Add function to display all rgb gamut colors
* in Makefile.am, use option serial-tests to avoid races in testing
* Make md subdirectory and add ax_split_version.md there
* Simple function for hue-invariant mapping (pixMapWithInvariantHue)
* Fixed bug in limit of ptra size when used for sorting by bins.
* Use hashmap to count pixel colors in RGB(A) images.
* Convert hashtest program to regression test hash_reg.
* Convert croptest program to regression test crop_reg.
* New color segmentation by region growing (colorfill.c)
* New regression tests: colorfill_reg, circle_reg, ccbord_reg.
* Set maxima for all allocations for common leptonica data structures.
* Don't fail when downscaling 2, 4, 8, and 32 bpp images, even
to one pixel, invoking pixScaleSmooth().
* New functions that select 1 bpp components based on their area.
* Incremental addition to sorted array of numbers.
* new prog/fuzzing directory for oss-fuzz based fuzzing programs
* use of pixcmapIsValid() with extra argument to determine validity
with the pix it is attached to.
* Use lept_stderr() in all programs in the prog directory.
* New program rasteroptest() for thorough testing of rasterop functions.
* Removed the pixSaveTiled*() functions
* Stubbed pixDisplayWrite(). Last used in tesseract 3.04.01 (2/2016).
1.79.0:
* Clean up auto-generation of files; removed 'register'
* Some fixes for issues identified by fuzzer
* New source files: checkerboard.c
* New programs: replacebytes.c, webpanimio_reg.c, partifytest.c,
rectangle_reg.c, lowsat_reg.c, rotate_it.c, scale_it.c, dewarp_it.c,
pdfio1_reg.c, pdfio2_reg.c, checkerboard_reg.c, underlinetest.c.
* Convert to standard reg test: heap_reg.c, pixa1_reg.c, smallpix_reg.c
* Improve data checking when reading image file headers
(pnm, png, jpeg, tiff)
* Fix some bugs in pnm reading
* Fix inconsistencies with the encoding type flags in pdf writing
* Allow tiff to write images with colormaps
* Fix errors in PS code; made some functions static
* Add code for animated webp (requires webp mux and demux libraries)
* Add "partify" application for separating parts in a musical score
* Enable tif read/write of gray+alpha and rgba; filter out tiff
pixels that are not uint and compression by tile
* Apply consistent formatting of static const variables
* Add programs for scaling, rotation and deskew, named dewkew_it,
rotate_it and scale_it, for useful operations on arbitrary images.
* Convert pdfiotest program to two regression tests: pdfio1_reg
and pdfio2_reg.
* Remove all use of strncat; use stringCat().
* New functions from removing outliers in sequences of boxes.
* Generalize pixAverageInRect(): mask, region and range filters,
and subsampling. New pixAverageInRectRGB().
* Fix int overflow bug in pixMedianCut(); required new heap accessor.
* New pixMultiplyGray() allows pix to be multiplied by an array (or
another pix)
* Better routines for counting color.
* Lossless conversion for RGB to cmap with not more than 256 colors.
* New histo based global thresholding: pixThresholdByHisto().
* Allow most reg tests to run even if external libraries are not
available.
* New one-line gplot functions that return a pix.
* New application to find where corners meet in a checkerboard.
* Add utility functions for painting through mask in cmap pix,
creating a hit-miss sela from a color pix, equality of two pta.
* Proper handling of 1 bpp colormap tiffs: remove when reading,
preserve when writing.
* Deprecate three pixSaveTile*() functions; removed all calls to
these from the library and progs.
* Include auto_config.h explicitly in all src and prog files.
* Improve input data checking for bmp files.
1.78.0:
* Various improvements in handling boxa sequences and transforms.
* New regression tests: boxa4_reg, string_reg
* New function for copying a pix, filtered by a boxa.
* Modify histogram method for image comparison.
* More careful attention to invalid boxes in box geometry functions.
* Better string and array functions for search and replace.
* Convenience functions for generating simple masks.
* Allow pdf writing of jp2k images, in full generality.
* Allow writing compressed ps images for printing.
* Modified enum comments to include a suggested enum name.
* New program: imagetops
1.77.0:
Here is the current status of CVE issues with leptonica; see
https://security-tracker.debian.org/tracker/source-package/leptonlib
* CVE-2018-7442: potential injection attack because '/' is allowed
in gplot rootdir.
Functions using this command have been disabled by default in the
distribution, starting with 1.76.0. As for the specific issue, it
is impossible to specify a general path without using the standard
directory subdivider '/'.
* CVE-2018-7186: number of characters not limited in fscanf or sscanf,
allowing possible attack with buffer overflow.
This has been fixed in 1.75.3.
* CVE-2018-3836: command injection vulnerability in gplotMakeOutput().
This has been fixed in 1.75.3, using stringCheckForChars() to block
rootnames containing any of: ;&|>"?*$()/<
* CVE-2017-18196: duplicated path components.
This was fixed in 1.75.3.
* CVE-2018-7441: hardcoded /tmp pathnames.
These are all wrapped in special debug functions that are not
enabled by default in the distribution, starting with 1.76.0.
* CVE-2018-7247: input 'rootname' can overflow a buffer.
This was fixed in 1.76.0, using snprintf().
* CVE-2018-7440: command injection in gplotMakeOutput using $(command).
Fixed in 1.75.3, which blocks '$' as well as 11 other characters.
Wrapped the few 'system' calls in an extra layer of debug code.
More coverity scan fixes; defects are about 1 per 10,000 source lines.
New regression tests: numa1_reg, numa2_reg, lowaccess_reg,
pixmem_reg.
New non-regression test programs: histoduptest
Juergen Buchmueller is working on Lua bindings. He typedef'd l_ok
and used it in 1100 functions that return a success/failure status.
He also helped clean up remaining issues in the doxygen-generated
documentation.
Using a packed struct for bmp headers to avoid crash on
some big-endians.
Fixed a bug in the prototype parser for xtractprotos that was
surfaced by a typedef declaration for the bmp headers.
Cleaned up IOS guards to avoid compiling a system(3) call on IOS.
Renamed autobuild --> autogen.sh
Added some basic pixa functions for rotation and translation.
Added an iterative method to find rectangular coverings for
arbitrary connected components.
Converted two tests to reg tests running in alltests_reg:
ptra1_reg, ptra2_reg
Enabled read/write for standard jpeg compressed tiff images.
Enabled reading for the old (deprecated) jpeg-encoded tiffs.
Fix range selectors for pixa, pixaa, boxa, boxaa, pta:
Now, last = -1 goes to the end.
When reading tiff --> pix, insert IMAGEDESCRIPTION into text field.
Converted iotest to reg test iomisc_reg; added to alltests_reg
Converted rasterop_reg into a standard regression test; added
to alltests_reg.
Converted boxa2_reg and fhmtauto_reg into standard regression tests;
added to alltests_reg.
Split boxa sequence functions out of boxfunc4.c, into a new boxfunc5.c.
Simplified bmp header and made reading more clearly endian
agnostic (Juergen Buchmueller)
New boxa3_reg regression test. This tests sequences of boxes
by two new boxfunctions in boxfunc5.c.
New bootnumgen4.c for more digit templates.
Rename prog/recog_bootnum.c --> prog/recog_bootname1.c
New in prog: recog_bootnum2.c, recog_bootnum3.c, recogtest7.c
Fixed uninitialized data in pixCentroid() on 1 bpp pix.
New reg test: bytea_reg.c. (removed byteatest.c)
Fixed bug in non-transcoding pdf generation from 1 bpp png.
Added LGTM to static analyzers that run over the library.
1.76.0:
Modify infrastructure to fix outstanding security issues. By default,
you can no longer create temp directories and temp files whose
names are known to the compiler. Also, prevent "system" calls,
which were used for image display and gnuplot.
Replaced remaining sprintf() with snprintf() in prog tests.
Added non-transcoding functions for generating pdf from jpeg pixacomp
Add control of jpeg quality from pixWriteMem() and pixWriteStream()
Fixed getFilenamesInDirectory() to properly identify directories
Prevent size overflow in calloc for kernel; cleaned it up fpix and dpix
bmp reading now accepts negative height
Simplified splitimage2pdf; it no longer uses ps2pdf
Remove name-mangling WRITE_AS_NAMED compile option.
Removed 2 deprecated write functions.
Added these regression tests:
locminmax_reg, speckle_reg, watershed_reg,
1.75.2:
Converted several progs to standard regression tests.
Added these tests to the alltests_reg suite:
adaptnorm_reg, binmorph1_reg, binmorph3_reg, equal_reg,
extrema_reg, grayfill_reg, falsecolor_reg, grayquant_reg.
Autotools fix for restricting giflib to 5.1+, and allowing openjpeg 2.3
1.75.1:
* Simpler and more accurate function for finding word masks from
* text image; better debugging and more thorough testing.
* Added to regression test set: prog/italic_reg
* Fix for potential injection attack using gplot rootdir.
* Bug fix for bmp reading to set opacity.
This is a new version, for major Ubuntu release 18.04.
$TMPDIR path rewriting turned off on Unix; only used for Windows.
Added pix conversion to depth 2 and 4. We now have general
converters to 1, 2, 4, 8, 16 and 32 bpp.
Modified giflib to use read/write from/to memory; no temp files;
no longer support versions before 5.1.
Move most low-level code from separate files to their callers;
about 30 of them became static.
Improved table detection on scanned page images (tests: pageseg_reg.c)
Added support for write/compare regression tests for files.
Modified printimage for more flexibility.
Enable lookup by key on comma-separated key/value text file.
Update README.html for building with Visual Studio.
Improved functions for getting pixel averages in RGB images
Simplified and speedup of unsharp masking.
New function for detecting and correcting text orientation.
Remove slow sharpening operation when not appropriate during scaling.
Better handling of gplots with 0 or 1 data point.
Coverity scan fixes.
Modified jpeg2000 header to use openjpeg 2.3.
Improved depth accessors for pixa and pixaa; added size accessors
for pixa and pixaa.
Bug fix in webp interface on read error.
New function that finds the closest boxes in a boxa to any particular
box, in each of 4 directions.
New regression tests in automated sequence: blend5_reg, quadtree_reg,
wordboxes_reg.
New program: textorient
Removed programs: snapcolortest
1.74.4 11 Jun 17
- Converted two progs to reg tests
- New version because 1.74.3 had some spurious files (xtractprotos,
endianness.h)
1.74.3 9 Jun 17
- Coverity scan fixes.
- Several fixes for running on Windows, including subtle one with tiff
encoding depending on pad bits.
- Utility and test if a page image likely has a table.
- Remove use of pixCreateTemplateNoInit() where it may cause problems.
- Make release 'configure-make ready'
1.74.1 4 Jan 17
- Configuration changes to support the patch number in the
version (major.minor.patch).
- Removed all remaining pixDisplayWrite() calls in prog/.
- Cleaned up and/or promoted about 15 programs to full regression
tests. There are now 95 tests in the regression set.
- Over half the initial coverity scan warnings have been removed.
1.74.0 10 Dec 16
- Leptonica development was moved to github. The master is at:
github.com/danbloomberg/leptonica
- Egor Pugin is the maintainer of the site.
- A very large number of changes have been made. Some of them follow;
- details can be found in the git commit messages.
- Static makefiles modified to work with gnu*9 and c*9.
- Modify SET macros to work on windows.
- New modes for RGB --> gray conversion.
- New functions added for displaying a pix from a pixa.
- Split out sort/hash/set/map functions for dna, sarray and pta.
- More robust horizontal deskew on multi-column page images.
- Improve webpio_reg test.
- Remove X11 display for gplot; it is no longer supported.
- Remove most sleep calls, which were put in for gplot; no longer needed.
- Removed use of gthumb in library.
- Removed use of pixDisplayWrite() in the library; still in some progs.
- Improved test for endianness in makefile.static; no longer requires
any local files or building and running a program.
- Modified all files for doxygen output (spearheaded by Jurgen Buchmuller)
- Improved plotting of the boxes in a boxa.
- Replaced the slow point hash function with a simple fast one.
- Added pam (4 component) format writing to pnmio.c (Jurgen Buchmuller)
- Improved rendering of pixa in side/by/sides.
- Better utilities for pixa and pixacomp.
- Add read/write serialization functions from/to memory for all
the major data structures that do not already have them.
- More serialized boot recognizers stored as self-generating code.
- Cleaned up generating an adapted recognizer from the boot recognizer.
- Simplified temp file naming; removed most instances of named
temp files from non-debug code; use tmpfile() and a wrapper
l_makeTempFilename().
- Simplify and streamline multipage tiff reading (Jeff Breidenbach).
- Improvement of Otsu thresholding.
- Recognize outstanding contributors to leptonica over the years.
- New gif mem read/write interface that avoids writing a temp file,
contributed by Tobias Peirick.
- Use double arrays (dna) instead of float (numa) for set ops.
- Enrolled in coverity scan to find potential bugs (Stefan Weil
managed it). Fixed about 200 of them, mostly potential memory
leaks from early function exit.
- Cleanup of gray quantization functions and tests.
- Refactored connectivity-conserving operations, to make them more useful.
- Provided methods for measuring and regularizing the width of strokes.
- Removed viewfiles.c from library; code is now in prog htmlviewer.c.
- Better debugging in page segmentation (pageseg.c)
- Deprecated the pixDisplayWrite*() debugging methods.
- Added about 15 regression tests to the framework in alltests_reg.c
- Final mods for compatibility with tesseract 4.00.
1.73
- All lept_* functions have been rewritten to avoid path rewrites
for
output to temp files, which were introduced in 1.72.
- Naming changes (to avoid collisions):
#defines MALLOC --> LEPT_MALLOC, CALLOC --> LEPT_CALLOC, etc.
ByteBuffer --> L_ByteBuffer
- Added grayscale histogram functions that can be used to compare
images.
- Added functions to determine if an image region has horizontal
text lines.
- Added functions to compare photo regions of images to determine
if they're essentially the same.
- Added red-black tree utility functions to implement maps and
sets.
- The keys for maps and sets can be 64-bit entities (signed and
unsigned integers and doubles).
- Implemented hashsets and hashmaps, using 64 bit keys.
- Replaced the numaHash by l_dnaHash; removed numa2d
- Improved security of tiff and gif reading, to prevent memory
corruption
when reading bad data.
- Removed src files: bootnumgen.c
- Added src files: rbtree.c, rbtree.h, map.c, bootnumgen1.c,
bootnumgen2.c
- Added prog files: rbtreetest.c, maptest.c, settest.c,
hashtest.c,
recog_bootnum.c, percolatetest.c
- Added files for building using cmake (Egor Pugin)
1.72
- Better handling of 1 bpp colormap read/write with png so that
they are losseless.
- Fixed overflow bug in pixCorrelationBinary().
- Fixed orientation flags and handling of 16 bit RGB in tiff.
- Also new wrappers to TIFFClientOpen(), so we no longer go
through
the file descriptor for memory operations.
- Improvements in the dewarp functions.
- New box sequence smoothings.
- New antialiased painting through mask; previously it was only
implemented for connected components in a mask.
- Better error handling and debug output with jpeg2000 read/write.
- Implemented base64 encoding. This allows binary data to be
represented
as a C string that can be compiled. Used this in bmf utility.
- Implemented automatic code generation for deserialization from
compiled strings (stringcode.*)
- Regression tests write to leptonica subdir of in windows; in
unix it is optional. This avoids spamming the directory.
- Added new colorspace conversions (XYZ, LAB).
- New source files: encoding.c, bmfdata.h, stringcode.c,
stringcode.h,
bootnumgen.c.
- Removed source files: convolvelow.c, graymorphlow.c
- New programs: genfonts_reg, colorize_reg, texturefill_reg,
autogentest1, autogentest2.
- alltests_reg now has 66 tests.
Problems found with existing digests:
Package fotoxx distfile fotoxx-14.03.1.tar.gz
ac2033f87de2c23941261f7c50160cddf872c110 [recorded]
118e98a8cc0414676b3c4d37b8df407c28a1407c [calculated]
Package ploticus-examples distfile ploticus-2.00/plnode200.tar.gz
34274a03d0c41fae5690633663e3d4114b9d7a6d [recorded]
da39a3ee5e6b4b0d3255bfef95601890afd80709 [calculated]
Problems found locating distfiles:
Package AfterShotPro: missing distfile AfterShotPro-1.1.0.30/AfterShotPro_i386.deb
Package pgraf: missing distfile pgraf-20010131.tar.gz
Package qvplay: missing distfile qvplay-0.95.tar.gz
Otherwise, existing SHA1 digests verified and found to be the same on
the machine holding the existing distfiles (morden). All existing
SHA1 digests retained for now as an audit trail.
operations, along with a description of the functions and some design methods.
A full set of affine transformations (translation, shear, rotation, scaling)
on images of all depths is included, with the exception that some of the
scaling methods do not work at all depths. There are also implementations of
binary morphology, grayscale morphology, convolution and rank order filters,
and applications such as jbig2 image processing and color quantization.