Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Failing test 10tiff.t with version 1.022 #524

Closed
perlpunk opened this issue Jan 3, 2024 · 5 comments
Closed

Failing test 10tiff.t with version 1.022 #524

perlpunk opened this issue Jan 3, 2024 · 5 comments

Comments

@perlpunk
Copy link

perlpunk commented Jan 3, 2024

We are seeing test failures when trying to build Imager in openSUSE OBS:

https://build.opensuse.org/package/live_build_log/devel:languages:perl:autoupdate/perl-Imager/standard/x86_64
perl 5.38, openSUSE Tumbleweed

[   22s] "/usr/bin/perl" -MExtUtils::Command::MM -e 'cp_nonempty' -- CountColor.bs ../blib/arch/auto/Imager/CountColor/CountColor.bs 644
[   22s] PERL_DL_NONLAZY=1 "/usr/bin/perl" "-MExtUtils::Command::MM" "-MTest::Harness" "-e" "undef *Test::Harness::Switches; test_harness(0, '../blib/lib', '../blib/arch')" t/*.t
[   22s] t/t00countcolor.t .. ok
[   22s] All tests successful.
[   22s] Files=1, Tests=9,  0 wallclock secs ( 0.02 usr  0.00 sys +  0.07 cusr  0.00 csys =  0.09 CPU)
[   22s] Result: PASS
[   22s] make[1]: Leaving directory '/home/abuild/rpmbuild/BUILD/Imager-1.022/CountColor'
[   22s] make[1]: Entering directory '/home/abuild/rpmbuild/BUILD/Imager-1.022/DynTest'
[   22s] "/usr/bin/perl" -MExtUtils::Command::MM -e 'cp_nonempty' -- DynTest.bs ../blib/arch/auto/Imager/Filter/DynTest/DynTest.bs 644
[   22s] PERL_DL_NONLAZY=1 "/usr/bin/perl" "-MExtUtils::Command::MM" "-MTest::Harness" "-e" "undef *Test::Harness::Switches; test_harness(0, '../blib/lib', '../blib/arch')" t/*.t
[   22s] t/t00dyntest.t .. ok
[   22s] All tests successful.
[   22s] Files=1, Tests=4,  1 wallclock secs ( 0.02 usr  0.00 sys +  0.07 cusr  0.00 csys =  0.09 CPU)
[   22s] Result: PASS
[   22s] make[1]: Leaving directory '/home/abuild/rpmbuild/BUILD/Imager-1.022/DynTest'
[   22s] make[1]: Entering directory '/home/abuild/rpmbuild/BUILD/Imager-1.022/FT2'
[   22s] "/usr/bin/perl" -MExtUtils::Command::MM -e 'cp_nonempty' -- FT2.bs ../blib/arch/auto/Imager/Font/FT2/FT2.bs 644
[   22s] PERL_DL_NONLAZY=1 "/usr/bin/perl" "-MExtUtils::Command::MM" "-MTest::Harness" "-e" "undef *Test::Harness::Switches; test_harness(0, '../blib/lib', '../blib/arch')" t/*.t
[   23s] FreeType2 runtime 2.13.2 compile-time 2.13.2
[   23s] t/t10ft2.t ..... ok
[   23s] t/t20thread.t .. ok
[   23s] t/t90std.t ..... ok
[   23s] All tests successful.
[   23s] Files=3, Tests=234,  0 wallclock secs ( 0.03 usr  0.00 sys +  0.26 cusr  0.05 csys =  0.34 CPU)
[   23s] Result: PASS
[   23s] make[1]: Leaving directory '/home/abuild/rpmbuild/BUILD/Imager-1.022/FT2'
[   23s] make[1]: Entering directory '/home/abuild/rpmbuild/BUILD/Imager-1.022/Flines'
[   23s] "/usr/bin/perl" -MExtUtils::Command::MM -e 'cp_nonempty' -- Flines.bs ../blib/arch/auto/Imager/Filter/Flines/Flines.bs 644
[   23s] PERL_DL_NONLAZY=1 "/usr/bin/perl" "-MExtUtils::Command::MM" "-MTest::Harness" "-e" "undef *Test::Harness::Switches; test_harness(0, '../blib/lib', '../blib/arch')" t/*.t
[   23s] t/t00flines.t .. ok
[   23s] All tests successful.
[   23s] Files=1, Tests=3,  0 wallclock secs ( 0.01 usr  0.00 sys +  0.07 cusr  0.00 csys =  0.08 CPU)
[   23s] Result: PASS
[   23s] make[1]: Leaving directory '/home/abuild/rpmbuild/BUILD/Imager-1.022/Flines'
[   23s] make[1]: Entering directory '/home/abuild/rpmbuild/BUILD/Imager-1.022/GIF'
[   23s] "/usr/bin/perl" -MExtUtils::Command::MM -e 'cp_nonempty' -- GIF.bs ../blib/arch/auto/Imager/File/GIF/GIF.bs 644
[   23s] PERL_DL_NONLAZY=1 "/usr/bin/perl" "-MExtUtils::Command::MM" "-MTest::Harness" "-e" "undef *Test::Harness::Switches; test_harness(0, '../blib/lib', '../blib/arch')" t/*.t
[   23s] # giflib version (from header) 5.2
[   23s] t/t10gif.t ..... ok
[   24s] t/t20new.t ..... ok
[   24s] t/t30fixed.t ... ok
[   24s] t/t40limit.t ... ok
[   24s] t/t50header.t .. ok
[   24s] All tests successful.
[   24s] Files=5, Tests=204,  1 wallclock secs ( 0.03 usr  0.00 sys +  0.65 cusr  0.07 csys =  0.75 CPU)
[   24s] Result: PASS
[   24s] make[1]: Leaving directory '/home/abuild/rpmbuild/BUILD/Imager-1.022/GIF'
[   24s] make[1]: Entering directory '/home/abuild/rpmbuild/BUILD/Imager-1.022/ICO'
[   24s] "/usr/bin/perl" -MExtUtils::Command::MM -e 'cp_nonempty' -- ICO.bs ../blib/arch/auto/Imager/File/ICO/ICO.bs 644
[   24s] PERL_DL_NONLAZY=1 "/usr/bin/perl" "-MExtUtils::Command::MM" "-MTest::Harness" "-e" "undef *Test::Harness::Switches; test_harness(0, '../blib/lib', '../blib/arch')" t/*.t
[   24s] t/t10icon.t ......... ok
[   24s] t/t20readone.t ...... ok
[   24s] t/t21readmult.t ..... ok
[   24s] t/t30cursor.t ....... ok
[   24s] t/t40readcurone.t ... ok
[   24s] t/t41curmultread.t .. ok
[   24s] t/t50readfail.t ..... ok
[   25s] t/t60writefail.t .... ok
[   25s] t/t70icosing.t ...... ok
[   25s] t/t71icomult.t ...... ok
[   25s] t/t72cursing.t ...... ok
[   25s] t/t73curmult.t ...... ok
[   25s] All tests successful.
[   25s] Files=12, Tests=253,  1 wallclock secs ( 0.04 usr  0.01 sys +  0.87 cusr  0.09 csys =  1.01 CPU)
[   25s] Result: PASS
[   25s] make[1]: Leaving directory '/home/abuild/rpmbuild/BUILD/Imager-1.022/ICO'
[   25s] make[1]: Entering directory '/home/abuild/rpmbuild/BUILD/Imager-1.022/JPEG'
[   25s] "/usr/bin/perl" -MExtUtils::Command::MM -e 'cp_nonempty' -- JPEG.bs ../blib/arch/auto/Imager/File/JPEG/JPEG.bs 644
[   25s] PERL_DL_NONLAZY=1 "/usr/bin/perl" "-MExtUtils::Command::MM" "-MTest::Harness" "-e" "undef *Test::Harness::Switches; test_harness(0, '../blib/lib', '../blib/arch')" t/*.t
[   25s] t/t00load.t ... ok
[   25s] # libjpeg version: libjpeg-turbo version 2.1.5.1 api 80
[   25s] t/t10jpeg.t ... ok
[   25s] t/t20limit.t .. ok
[   25s] All tests successful.
[   25s] Files=3, Tests=188,  0 wallclock secs ( 0.02 usr  0.00 sys +  0.45 cusr  0.06 csys =  0.53 CPU)
[   25s] Result: PASS
[   25s] make[1]: Leaving directory '/home/abuild/rpmbuild/BUILD/Imager-1.022/JPEG'
[   25s] make[1]: Entering directory '/home/abuild/rpmbuild/BUILD/Imager-1.022/Mandelbrot'
[   25s] "/usr/bin/perl" -MExtUtils::Command::MM -e 'cp_nonempty' -- Mandelbrot.bs ../blib/arch/auto/Imager/Filter/Mandelbrot/Mandelbrot.bs 644
[   25s] PERL_DL_NONLAZY=1 "/usr/bin/perl" "-MExtUtils::Command::MM" "-MTest::Harness" "-e" "undef *Test::Harness::Switches; test_harness(0, '../blib/lib', '../blib/arch')" t/*.t
[   26s] t/t00mandel.t .. ok
[   26s] All tests successful.
[   26s] Files=1, Tests=3,  0 wallclock secs ( 0.02 usr  0.00 sys +  0.06 cusr  0.01 csys =  0.09 CPU)
[   26s] Result: PASS
[   26s] make[1]: Leaving directory '/home/abuild/rpmbuild/BUILD/Imager-1.022/Mandelbrot'
[   26s] make[1]: Entering directory '/home/abuild/rpmbuild/BUILD/Imager-1.022/PNG'
[   26s] "/usr/bin/perl" -MExtUtils::Command::MM -e 'cp_nonempty' -- PNG.bs ../blib/arch/auto/Imager/File/PNG/PNG.bs 644
[   26s] PERL_DL_NONLAZY=1 "/usr/bin/perl" "-MExtUtils::Command::MM" "-MTest::Harness" "-e" "undef *Test::Harness::Switches; test_harness(0, '../blib/lib', '../blib/arch')" t/*.t
[   26s] t/00load.t .. ok
[   26s] # Library version 10640
[   26s] t/10png.t ... ok
[   26s] All tests successful.
[   26s] Files=2, Tests=260,  0 wallclock secs ( 0.03 usr  0.01 sys +  0.38 cusr  0.02 csys =  0.44 CPU)
[   26s] Result: PASS
[   26s] make[1]: Leaving directory '/home/abuild/rpmbuild/BUILD/Imager-1.022/PNG'
[   26s] make[1]: Entering directory '/home/abuild/rpmbuild/BUILD/Imager-1.022/SGI'
[   26s] "/usr/bin/perl" -MExtUtils::Command::MM -e 'cp_nonempty' -- SGI.bs ../blib/arch/auto/Imager/File/SGI/SGI.bs 644
[   26s] PERL_DL_NONLAZY=1 "/usr/bin/perl" "-MExtUtils::Command::MM" "-MTest::Harness" "-e" "undef *Test::Harness::Switches; test_harness(0, '../blib/lib', '../blib/arch')" t/*.t
[   26s] t/00load.t ... ok
[   26s] t/10read.t ... ok
[   26s] t/20write.t .. ok
[   27s] t/30limit.t .. ok
[   27s] All tests successful.
[   27s] Files=4, Tests=175,  1 wallclock secs ( 0.04 usr  0.01 sys +  0.35 cusr  0.02 csys =  0.42 CPU)
[   27s] Result: PASS
[   27s] make[1]: Leaving directory '/home/abuild/rpmbuild/BUILD/Imager-1.022/SGI'
[   27s] make[1]: Entering directory '/home/abuild/rpmbuild/BUILD/Imager-1.022/TIFF'
[   27s] "/usr/bin/perl" -MExtUtils::Command::MM -e 'cp_nonempty' -- TIFF.bs ../blib/arch/auto/Imager/File/TIFF/TIFF.bs 644
[   27s] PERL_DL_NONLAZY=1 "/usr/bin/perl" "-MExtUtils::Command::MM" "-MTest::Harness" "-e" "undef *Test::Harness::Switches; test_harness(0, '../blib/lib', '../blib/arch')" t/*.t
[   27s] # libtiff binary release 4.6.0
[   27s] # build version date 20230908
[   27s] # build version 4.6.0
[   27s] 
[   27s] #   Failed test 'write with AdobeDeflate'
[   27s] #   at t/10tiff.t line 902.
[   27s] 
[   27s] #   Failed test 'check read image matches'
[   27s] #   at t/10tiff.t line 905.
[   27s] # right is undef
[   27s] Can't call method "tags" on an undefined value at t/10tiff.t line 906, <TIFF> line 1.
[   27s] # Tests were run but no plan was declared and done_testing() was not seen.
[   27s] # Looks like your test exited with 2 just after 257.
[   27s] t/10tiff.t .. 
[   27s] Dubious, test returned 2 (wstat 512, 0x200)
[   27s] Failed 2/257 subtests 
[   27s] 
[   27s] Test Summary Report
[   27s] -------------------
[   27s] t/10tiff.t (Wstat: 512 (exited 2) Tests: 257 Failed: 2)
[   27s]   Failed tests:  256-257
[   27s]   Non-zero exit status: 2
[   27s]   Parse errors: No plan found in TAP output
[   27s] Files=1, Tests=257,  0 wallclock secs ( 0.02 usr  0.00 sys +  0.26 cusr  0.04 csys =  0.32 CPU)
[   27s] Result: FAIL
[   27s] Failed 1/1 test programs. 2/257 subtests failed.
[   27s] make[1]: *** [Makefile:836: test_dynamic] Error 2
[   27s] make[1]: Leaving directory '/home/abuild/rpmbuild/BUILD/Imager-1.022/TIFF'
[   27s] make: *** [Makefile:1475: subdirs-test_dynamic] Error 2
[   27s] error: Bad exit status from /var/tmp/rpm-tmp.VhyJu1 (%check)
@tonycoz
Copy link
Owner

tonycoz commented Jan 4, 2024

I tried reproducing this here in a WSL2* opensuse tumbleweed and it passed.

This was the opensuse tumbleweed from the microsoft store, this is a new install, with only the recommended sudo zypper ref -b && sudo zypper dup and sudo zypper install libtiff-devel gcc make git.

Could you please try replacing the failing test:

  ok($im->write(type => "tiff", data => \$data, tiff_compression => "AdobeDeflate"),
     "write with AdobeDeflate");

with

  ok($im->write(type => "tiff", data => \$data, tiff_compression => "AdobeDeflate"),
     "write with AdobeDeflate")
    or diag $im->errstr;

which should provide more information on the reason for the failure.

* faster to set up than a VM

@perlpunk
Copy link
Author

perlpunk commented Jan 4, 2024

Interestingly, I also cannot reproduce it in a container. Something must be different in the environment OBS is using.
Here is the output with the adjusted test:

[   25s] PERL_DL_NONLAZY=1 "/usr/bin/perl" "-MExtUtils::Command::MM" "-MTest::Harness" "-e" "undef *Test::Harness::Switches; test_harness(0, '../blib/lib', '../blib/arch')" t/*.t
[   25s] # libtiff binary release 4.6.0
[   25s] # build version date 20230908
[   25s] # build version 4.6.0
[   25s] 
[   25s] #   Failed test 'write with AdobeDeflate'
[   25s] #   at t/10tiff.t line 902.
[   25s] # write TIFF: write scan line failed: Compression scheme 17733 scanline encoding is not implemented
[   25s] 
[   25s] #   Failed test 'check read image matches'
[   25s] #   at t/10tiff.t line 906.
[   25s] # right is undef
[   25s] Can't call method "tags" on an undefined value at t/10tiff.t line 907, <TIFF> line 1.

@tonycoz
Copy link
Owner

tonycoz commented Jan 5, 2024

valgrind revealed it as a read-after-free, and looking at the code it is

imager/TIFF/imtiff.c

Lines 1018 to 1019 in e230039

_TIFFfree(codecs);
return c->scheme;

where c is a pointer within codecs.

The fix is simple, but I want to add some CI tests using valgrind.

tonycoz added a commit that referenced this issue Jan 6, 2024
needed to workaround a broken interaction between valgrind and glibc

This fails due to #524
@tonycoz
Copy link
Owner

tonycoz commented Jan 13, 2024

Fixed in 1.023

@perlpunk
Copy link
Author

perlpunk commented Mar 7, 2024

Thanks!

mtremer pushed a commit to ipfire/ipfire-2.x that referenced this issue Dec 12, 2024
- Update from version 1.012 (2020) to 1.024
- Update of rootfile
- Addition of patch to fix inclusion of t1tables.h for FT_Has_PS_Glyph_Names which is
   no longer pulled in by ftmm.h since FreeType 2.13.3
- Changelog
    1.024
	 - TIFF: improve reporting from a test on failure.
	 - TIFF: support back to libtiff 4.0.8, for compatibility with RHEL
	   and its clones.
	   tonycoz/imager#527
    1.023
	 - TIFF: don't read after free when looking up a compression codec
	   by the libtiff defined name,
	   tonycoz/imager#524
    1.022
	 - TIFF: We can no longer be lazy in implementing the size callback.
	   tonycoz/imager#522
	   https://bugs.debian.org/1057270
    1.021
	Several TIFF changes:
	 - require libtiff 4.1.0 or later
	 - add buildversion, builddate and libversion methods
	 - add the codecs method which fetches a list of available TIFF
	   compression codes
	 - avoid deprecation warnings from libtiff about using the old
	   libtiff defined integer types
	 - require vsnprintf() (C99)
	 - remove my adaption of TIFFReadRGBATile() since libtiff now provides
	   TIFFReadRGBATileExt() which can do the same thing
	 - use pkg-config to find libtiff if possible
	 - for sufficiently modern libtiff (4.5.0) use TIFFClientOptions to
	   specify the warning and error handlers, this means we no longer
	   need a mutex for 4.5.0 and later.
	 - collect warnings using a buffer chain instead of custom allocation
	   code.
	 - include the "module" name (typically a libtiff function name) when
	   recording libtiff warnings.
	 - add CI to test Imager::File::TIFF against libtiff 4.1.0 through 4.6.0
	 - other minor fixes
	Other changes:
	 - prevent CodeQL from complaining about an implicit conversion to
	   unsigned char
    1.020
	 - masked(): disallow negative width/height masked images
	 - masked(): adjust source corners as bottom right relative if they
	   are negative.
	 - masked(): reject image source corners where either co-ordinate is
	   negative after the above adjustment.
	 - Imager::Files: update external image file support modules list
	 - internal test: don't fail on Imager::File::APNG link
	 - disable Imager::Font::T1 and Freetype 1.x fonts by default.
	   Unpatched t1lib simply doesn't work on 64 bit systems, and no-one
	   ships the patched version anymore.
	   tonycoz/imager#510
    1.019
	 - fix palette/transparency table generation when writing paletted PNG
	   images with tranparency.  This happened to work for the test case,
	   but the mechanism used to generate the palette order preserved most
	   palette index positions, which hid the problem with actually
	   generating the PLTE and tRNS chunks.
	   tonycoz/imager#499
	 - added lowish-level read() and write() class methods to
	   Imager::File::PNG, these are mostly intended for
	   Imager::File::APNG, but are documented and usable elsewhere.
	 - document in Imager::Install how to install Imager without any of
	   the bundled-but-also-on-CPAN modules being installed.
	   tonycoz/imager#498
    1.018
	 - skip trying to produce deprecation warnings before perl 5.14, since
	   that doesn't support custom warning categories within a package.
	   This prevents pointless failures on these old versions of perl.
    1.017
	Bug fix:
	 - fix a one bytes underallocation for Imager::TrimColorList.  On
	   older perls this could lead to writing a zero byte one past the end
	   of the allocated block.
	Documentation:
	 - expand on why you might want to call Imager->preload() and that you
	   probably don't need to.
    1.016
	Upcoming backward incompatible changes:
	 - deprecate setting/deleting tags by code.  If this causes you a
	   problem please open an issue.  You can disable the warning produced
	   with:
	    no warnings 'Imager::tagcodes';
	 - deprecate image channel masks.  If this causes you a problem please
	   open an issue.  You can disable the warning produced with:
	    no warnings 'Imager::channelmask';
	If you use either of these features please let me know.
	Minor features:
	 - add magic/extension support for AVIF files, see Imager::File::AVIF
	   on CPAN.
	 - treat an unknown extension of two or more characters as a potential
	   file type on write.
	Bug fixes:
	 - prevent a possible undefined value warning from t/t10jpeg.t
	 - update MANIFEST.SKIPs, update MANIFESTs and improve MANIFEST testing.
	 - TGA: failing to read in the palette of a paletted TGA file would
	   leak memory.
	 - JPEG: supplying invalid values for the new JPEG write tags could
	   leak memory.
	 - PNG: fix validation of Latin1 only tags when writing PNGs.
	   (detected by clang)
	 - matrix_transform: correctly use fabs() instead of abs() on floating
	   point values when deciding whether to divide for a perspective
	   transform. (detected by clang)
	 - fix the i_poly_aa_cfill_m() API macro
	Cage cleaning:
	 - eliminate IO::File usage from the Imager code base
	 - fix a type error harmlessly ignored by gcc but found by clang
	 - eliminate memory leaks in sub-module Makefile.PL probe test code to
	   allow the probes to succeed under LeakSanitizer.
	 - BMP: fix some otherwise harmless clang warnings
	 - remove some code meant to work around some unspecified old Solaris
	   linker bug.
	 - i_noise: prevent a harmless conversion warning from clang
	 - fountain fill/filter: limit ssample_param to 1000 to simplify code.
    1.015
	 - rename the "virtual" member of i_img to "isvirtual" to allow the
	   API to be used from C++, this may break source compatibility, using
	   the i_img_virtual() accessor is backward compatible.
	 - add cookbook entry to populating an image from raw RGB samples
	   tonycoz/imager#471
	 - Imager::Probe now puts the existing value of PKG_CONFIG_PATH at the
	   front of the PKG_CONFIG_PATH used when it calls pkg-config.
	 - setup CodeQL workflow and fix detected warnings
	JPEG updates:
	 - detect libjpeg (of whichever variety) via pkg-config if possible
	 - add specific support for mozjpeg (turn its optimization off by
	   default so tests pass.)
	 - add libjpeg_version(), is_mozjpeg(), is_turbojpeg() and
	   has_arith_coding() methods
	 - add jpeg_compress_profile output tag, which only matters for
	   mozjpeg
	 - the libjpeg_version() method replaces the old
	   Imager::File::JPEG::i_libjpeg_version() function, and the format
	   has changed.
	 - various obscure jpeg output controls:
	   - add support for JPEG arithmetic coding when the supplied libjpeg
	     supports it.  Note that not all JPEG decoders can handle arithmetic
	     coded JPEGs.
	   - add support for disabling the JFIF header for JPEG files using the
	     jpeg_jfif tag.
	   - add support for smoothing to eliminate dithering noise (like cjpeg
	     -smooth) using the jpeg_smooth tag.
	   - add support for producing JPEG restart markers (like cjpeg -restart
	     N), using the jpeg_restart tag.
	   - add control over subsample for JPEG (like the cjpeg -sample
	     parameter) using the jpeg_sample tag
	   - added tags for the rest of the MozJPEG API parameters.
	   - add jpeg_tune tag, corresponding to the MozJPEG cjpeg -tune-*
	     options.
    1.014
	Bug fixes:
	 - fix failed to build on non-threaded perls.
	   tonycoz/imager#472
	 - when writing a paletted image with an alpha channel to PNG only
	   set the tRNS chunk if the image has transparent colours.  With
	   older libpng this could add an erroneous tRNS chunk (or possibly
	   undefined behaviour if I understand the libpng code).
	   tonycoz/imager#459
	Features:
	 - Imager::Color and Imager::Color::Float objects can now be created
	   from CSS style rgb(...) strings.
	   tonycoz/imager#463
	 - added the as_css_rgb() method to both Imager::Color and
	   Imager::Color::Float to format the supplied color as a CSS style
	   rgb() string.
	   tonycoz/imager#463
	 - Imager::Color and Imager::Color::Float objects can now be created
	   (copied) or set from other Imager::Color or Imager::Color::Float
	   objects.
    1.013
	 - added rgb_difference() method
	   Thanks to Andreas König
	   tonycoz/imager#462
	 - update ppport.h to prevent a redefinition diagnostic
	 - update bug tracker URLs to point at github
	   tonycoz/imager#466
	 - update some other bug tracker URLs too.
	 - add the trim() and trim_rect() methods, to trim borders off an
	   image.
	 - add the as_float() method to Imager::Color and the as_8bit() method
	   to Imager::Color::Float to convert between the two types.
	 - update ppport.h to avoid a diagnostic in more modern perls.
	 - add detection for HEIF, JPEG XL and QOI image formats

Signed-off-by: Adolf Belka <adolf.belka@ipfire.org>
Reviewed-by: Michael Tremer <michael.tremer@ipfire.org>
Signed-off-by: Arne Fitzenreiter <arne_f@ipfire.org>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants