Skip to content
Commits on Apr 16, 2012
Commits on Apr 15, 2012
  1. Oops.

  2. Update .gitignore.

  3. Add OS type output for Amiga archives.

    Also enable checking for Amiga level1.lzh file.
Commits on Apr 14, 2012
  1. Add level 3 header decoding.

  2. Rework MS-DOS all-caps filename handling.

    MS-DOS all-caps filenames should be converted to lower case. Rework
    to correctly handle the way that level 2/3 headers handle filenames.
Commits on Apr 13, 2012
  1. Make directory entry handling consistent.

    Make file headers for directories (-lhd-) have a NULL filename when
    read from a level 0/1 header, for consistency with level 2/3 headers.
    Fix various code that assumes a non-NULL filename and sanity check to
    ensure one of either path or filename is always non-NULL.
Commits on Apr 12, 2012
  1. Parse level 2 file headers.

  2. Refactor file header parsing.

    Change the way that headers are parsed, to not make assumptions
    that are level 0/1-specific. This will allow level 2/3 decoding to
    be added.
Commits on Apr 11, 2012
  1. Only build fuzzer when doing 'make check'.

    Fixes failing compile when doing a straight 'make'. (Thanks
    Bastien Dejean)
Commits on Apr 10, 2012
  1. Fix corner case found in fuzz testing.

    If a new block is started with a length of zero, the count would
    be subtracted leading to an integer wraparound, with the result
    that the program could continue generating data indefinitely
    without any input. Use a while() loop to ensure that the new
    block has a size greater than zero, beginning a new block again
    immediately if an empty one is encountered.
  2. Add option to run decompressor input from file.

    Allows the dumped input from failing tests to be re-run and
Commits on Apr 9, 2012
  1. Refactor, dump input on crash or stall.

    Throw an alarm after 5 minutes if an iteration of the fuzz test does
    not complete, and dump the input to a file. Do the same when a SIGSEGV
    is thrown.
  2. Strip down fuzz test code and simplify.

    Genetic algorithm stuff is unnecessary now that the bit stream reader
    bug has been fixed. Just generate a block of random data and feed it
    into the decompressor.
  3. Add canary blocks around allocations.

    When fuzz testing, check that memory outside the structures used by the
    decompressors is not overwritten.
Commits on Apr 8, 2012
  1. Fix bug when reading small amounts.

    If the callback function used to read new data alwas returns a single
    byte, several of the decompressors will fail. Rework the peek_bits
    function in the bit stream reader code to repeatedly read more bytes.
Commits on Apr 6, 2012
  1. Add missing #include.

  2. Move POSIX dependencies into lib/arch code.

    Most POSIX functions are now accessed through the lha_arch.h abstraction
    layer, which hides the underlying OS.
  3. Add test for dry run output.

  4. Fix dry run output.

Commits on Apr 5, 2012
  1. Safely escape potentially malicious filenames.

    A malicious filename might contain escape characters that be
    interpreted by some terminal emulators in harmful ways. Escape
    all unsafe data when printing to the screen and add archive
    file for regression testing.
  2. Refactor extract code to always use relative paths.

    For security reasons, paths for extracted files should always be
    relative paths, so that arbitrary files cannot be overwritten.
Commits on Apr 3, 2012
Commits on Apr 2, 2012
  1. Add implementation of 'v' list option.

    Output is different when the 'v' option is added (-lv / -vv). Add
    new column definitions for this output mode and expected outputs for
    the test archives.
Commits on Apr 1, 2012
Something went wrong with that request. Please try again.