I reviewed woff2 1.0.2-1 as checked in to cosmic. This isn't a full
security audit, but rather a quick gauge of maintainability.

- woff2 is a library for decompressing WOFF2 font files to TTF, and is an 
implementation of the W3C spec (https://www.w3.org/TR/WOFF2/).
- No CVEs in our database.
- Build-Depends: cmake, debhelper, libbrotli-dev, pkg-config
- It is designed to process untrusted data from the web.

- Contains several binaries in PATH: woff2_info, woff2_compress,
woff2_decompress

- Doesn't spawn any subprocesses.
- Uses a mixture of operator new[] and std::vector for allocating write buffers.
- Uses a convenience class (woff2::Buffer) for reading from memory buffers, 
designed to protect against out-of-bounds errors.
- Makes use of std::unique_ptr
- Doesn't open any files.
- Some logging via printf and fprintf.
- No environment variable use.
- No privileged code.
- No networking.
- No cryptography.
- No sql.
- Doesn't use temporary files.
- No webkit.

- Some cppcheck errors. The first 2 look bogus, and the remaining ones in 
woff2_enc.cc are struct members that are unused:
[src/font.cc:88]: (error) Uninitialized struct member: table.flavor
[src/font.cc:88]: (error) Uninitialized struct member: table.num_tables
[src/woff2_enc.cc:349]: (error) Uninitialized struct member: table.checksum
[src/woff2_enc.cc:349]: (error) Uninitialized struct member: table.offset
[src/woff2_enc.cc:349]: (error) Uninitialized struct member: table.length
[src/woff2_enc.cc:349]: (error) Uninitialized struct member: table.data
[src/woff2_enc.cc:349]: (error) Uninitialized struct member: table.reuse_of
[src/woff2_enc.cc:349]: (error) Uninitialized struct member: table.flag_byte
[src/woff2_enc.cc:349]: (error) Uninitialized struct member: table.src_offset
[src/woff2_enc.cc:349]: (error) Uninitialized struct member: table.dst_offset
[src/woff2_enc.cc:349]: (error) Uninitialized struct member: table.dst_length
[src/woff2_enc.cc:349]: (error) Uninitialized struct member: table.dst_data

- Build logs are mostly clean, but there is a compiler warning on 32-bit 
architectures:
/<<PKGBUILDDIR>>/src/woff2_dec.cc: In function ‘bool 
woff2::{anonymous}::ReadWOFF2Header(const uint8_t*, size_t, 
woff2::{anonymous}::WOFF2Header*)’:
/<<PKGBUILDDIR>>/src/woff2_dec.cc:1184:37: warning: format ‘%lu’ expects 
argument of type ‘long unsigned int’, but argument 4 has type ‘size_t {aka 
unsigned int}’ [-Wformat=]
       src_offset, length, dst_offset);
                                     ^

The format identifier here should probably be %zu.

- No init scripts or systemd unit files.
- No dbus services.
- No setuid binaries.
- Doesn't call any privileged commands.
- No sudo fragments.
- No udev rules
- No cronjobs.

- There doesn't appear to be any standalone tests in the woff2
repository. woff2 support in Chrome (using the same library) has its own
tests, but that's no use here.

woff2 is fairly small and well maintained upstream. As expected for
something that processes untrusted data, it is programmed defensively
against invalid input. It is already embedded inside Firefox and Chrome,
and shouldn't be a maintenance burden.

Security team ACK for promoting woff2 to main.

** Changed in: woff2 (Ubuntu)
     Assignee: Ubuntu Security Team (ubuntu-security) => (unassigned)

-- 
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/1742743

Title:
  [MIR] woff2

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/woff2/+bug/1742743/+subscriptions

-- 
ubuntu-bugs mailing list
ubuntu-bugs@lists.ubuntu.com
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to