[sane-devel] sane-airscan 0.99.12 release notes

Alexander Pevzner pzz at apevzner.com
Wed Aug 5 12:51:47 BST 2020

Dear All,

I've just created sane-airscan 0.99.12 release.

The following release notes are mostly targeting maintainers of linux 
distros that already include sane-airscan or working on such an integration.

The primary goal of this release was to remove libsoup/libglib 
dependency. It also includes some stability improvements and bug fixes.

1. libsoup/libglib removal

This release doesn't use libsoub and libglib anymore. libsoup HTTP 
client was replaced with homemade one, HTTP parsing is handled by nodejs 
http-parser. Sources of the http-parser were directly included into the 
sane-airscan source tree, to ensure consistent behavior across different 
linux distros.

Build dependencies for packages needs to be updated.

For RPM:
   + gnutls-devel
   - glib2-devel
   - libsoup-devel
   - avahi-glib-devel

For DEB:
   + gnutls-dev
   - libglib2.0-dev
   - libsoup2.4-dev
   - libavahi-glib-dev

2. Correct handling of HTTP redirections

Some devices (for example, HP Color LaserJet MFP M477fdw) use HTTP 
redirect to enforce HTTPS vs HTTP. libsoup (and, by default, libcups) 
handles these redirects "as browser", by replacing POST request with GET 
requests, which breaks eSCL protocol.

3. Fixed buffer overflow in image clipping.

Under some circumstances (always in WSD mode, sometimes in eSCL mode), 
sane-airscan performs image clipping in software (i.e., full-size scan 
is requested from device and then clipped down to requested size).

Mistake in line buffer size calculation might cause software crashes due 
to buffer overflow.

4. Fixed hangup if LOAD operation was failed due to I/O error

If scanning was interrupted by I/O error when image already created at 
device but not downloaded yet, sane-airscan might hang.

5. Fixed SANE_STATUS_NO_DOCS reporting to simple-scan

simple-scan doesn't correctly handle SANE_STATUS_NO_DOCS if returned by 
sane_read(), not by sane_start().

6. Enforced 2500-ms pause between subsequent sane_start() retries.

If sane_start() returns SANE_STATUS_DEVICE_BUSY, simple-scan immediately 
retries it, without any pause or limit. It may put device under 
excessive stress, causing device to hang or reboot

7. Fixed small memory leak in a case of backend load/unload

sane_exit() didn't properly release all the memory, allocated by 
sane_init() during loading backend configuration file

8. Fixed crash in XML formatter

sane-airscan pretty-prints XML messages before writing them to the log 
file. Some kinds of XMLs could cause XML formatter to crash.


	Wishes, Alexander Pevzner (pzz at apevzner.com)

More information about the sane-devel mailing list