Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package libfvde for openSUSE:Factory checked in at 2022-09-19 16:03:54 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/libfvde (Old) and /work/SRC/openSUSE:Factory/.libfvde.new.2083 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "libfvde" Mon Sep 19 16:03:54 2022 rev:11 rq:1004578 version:20220915 Changes: -------- --- /work/SRC/openSUSE:Factory/libfvde/libfvde.changes 2022-08-30 14:50:03.416208751 +0200 +++ /work/SRC/openSUSE:Factory/.libfvde.new.2083/libfvde.changes 2022-09-19 16:04:03.374265682 +0200 @@ -1,0 +2,6 @@ +Sun Sep 18 23:23:15 UTC 2022 - Jan Engelhardt <jeng...@inai.de> + +- Update to release 20220915 + * No changelog was provided + +------------------------------------------------------------------- Old: ---- libfvde-experimental-20220807.tar.gz libfvde-experimental-20220807.tar.gz.asc New: ---- libfvde-experimental-20220915.tar.gz libfvde-experimental-20220915.tar.gz.asc ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ libfvde.spec ++++++ --- /var/tmp/diff_new_pack.HNNm4j/_old 2022-09-19 16:04:03.962267253 +0200 +++ /var/tmp/diff_new_pack.HNNm4j/_new 2022-09-19 16:04:03.966267264 +0200 @@ -18,7 +18,7 @@ %define lname libfvde1 Name: libfvde -Version: 20220807 +Version: 20220915 Release: 0 Summary: Library to access the File Vault Drive Encryption format License: GFDL-1.3-or-later AND LGPL-3.0-or-later @@ -46,7 +46,7 @@ BuildRequires: pkgconfig(libcsplit) >= 20220109 BuildRequires: pkgconfig(libcthreads) >= 20220102 BuildRequires: pkgconfig(libfcache) >= 20220110 -BuildRequires: pkgconfig(libfdata) >= 20211023 +BuildRequires: pkgconfig(libfdata) >= 20220111 BuildRequires: pkgconfig(libfguid) >= 20220113 BuildRequires: pkgconfig(libfplist) >= 20220116 BuildRequires: pkgconfig(libfvalue) >= 20220120 ++++++ libfvde-experimental-20220807.tar.gz -> libfvde-experimental-20220915.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libfvde-20220807/common/config.h new/libfvde-20220915/common/config.h --- old/libfvde-20220807/common/config.h 2022-08-07 21:11:02.000000000 +0200 +++ new/libfvde-20220915/common/config.h 2022-09-18 20:31:34.000000000 +0200 @@ -665,7 +665,7 @@ #define PACKAGE_NAME "libfvde" /* Define to the full name and version of this package. */ -#define PACKAGE_STRING "libfvde 20220807" +#define PACKAGE_STRING "libfvde 20220915" /* Define to the one symbol short name of this package. */ #define PACKAGE_TARNAME "libfvde" @@ -674,7 +674,7 @@ #define PACKAGE_URL "" /* Define to the version of this package. */ -#define PACKAGE_VERSION "20220807" +#define PACKAGE_VERSION "20220915" /* The size of `int', as computed by sizeof. */ #define SIZEOF_INT 4 @@ -707,7 +707,7 @@ /* #undef TM_IN_SYS_TIME */ /* Version number of package */ -#define VERSION "20220807" +#define VERSION "20220915" /* Define to 1 if `lex' declares `yytext' as a `char *' by default, not a `char[]'. */ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libfvde-20220807/configure new/libfvde-20220915/configure --- old/libfvde-20220807/configure 2022-08-07 21:10:43.000000000 +0200 +++ new/libfvde-20220915/configure 2022-09-18 20:31:02.000000000 +0200 @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.71 for libfvde 20220807. +# Generated by GNU Autoconf 2.71 for libfvde 20220915. # # Report bugs to <joachim.m...@gmail.com>. # @@ -621,8 +621,8 @@ # Identity of this package. PACKAGE_NAME='libfvde' PACKAGE_TARNAME='libfvde' -PACKAGE_VERSION='20220807' -PACKAGE_STRING='libfvde 20220807' +PACKAGE_VERSION='20220915' +PACKAGE_STRING='libfvde 20220915' PACKAGE_BUGREPORT='joachim.m...@gmail.com' PACKAGE_URL='' @@ -1763,7 +1763,7 @@ # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures libfvde 20220807 to adapt to many kinds of systems. +\`configure' configures libfvde 20220915 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1834,7 +1834,7 @@ if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of libfvde 20220807:";; + short | recursive ) echo "Configuration of libfvde 20220915:";; esac cat <<\_ACEOF @@ -2133,7 +2133,7 @@ test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -libfvde configure 20220807 +libfvde configure 20220915 generated by GNU Autoconf 2.71 Copyright (C) 2021 Free Software Foundation, Inc. @@ -2854,7 +2854,7 @@ This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by libfvde $as_me 20220807, which was +It was created by libfvde $as_me 20220915, which was generated by GNU Autoconf 2.71. Invocation command line was $ $0$ac_configure_args_raw @@ -4344,7 +4344,7 @@ # Define the identity of the package. PACKAGE='libfvde' - VERSION='20220807' + VERSION='20220915' printf "%s\n" "#define PACKAGE \"$PACKAGE\"" >>confdefs.h @@ -66407,7 +66407,7 @@ # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by libfvde $as_me 20220807, which was +This file was extended by libfvde $as_me 20220915, which was generated by GNU Autoconf 2.71. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -66475,7 +66475,7 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config='$ac_cs_config_escaped' ac_cs_version="\\ -libfvde config.status 20220807 +libfvde config.status 20220915 configured by $0, generated by GNU Autoconf 2.71, with options \\"\$ac_cs_config\\" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libfvde-20220807/configure.ac new/libfvde-20220915/configure.ac --- old/libfvde-20220807/configure.ac 2022-08-07 20:42:52.000000000 +0200 +++ new/libfvde-20220915/configure.ac 2022-09-15 05:43:59.000000000 +0200 @@ -2,7 +2,7 @@ AC_INIT( [libfvde], - [20220807], + [20220915], [joachim.m...@gmail.com]) AC_CONFIG_SRCDIR( diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libfvde-20220807/dpkg/changelog new/libfvde-20220915/dpkg/changelog --- old/libfvde-20220807/dpkg/changelog 2022-08-07 21:11:02.000000000 +0200 +++ new/libfvde-20220915/dpkg/changelog 2022-09-18 20:31:34.000000000 +0200 @@ -1,5 +1,5 @@ -libfvde (20220807-1) unstable; urgency=low +libfvde (20220915-1) unstable; urgency=low * Auto-generated - -- Joachim Metz <joachim.m...@gmail.com> Sun, 07 Aug 2022 21:11:01 +0200 + -- Joachim Metz <joachim.m...@gmail.com> Sun, 18 Sep 2022 20:31:32 +0200 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libfvde-20220807/include/libfvde/definitions.h new/libfvde-20220915/include/libfvde/definitions.h --- old/libfvde-20220807/include/libfvde/definitions.h 2022-08-07 21:11:02.000000000 +0200 +++ new/libfvde-20220915/include/libfvde/definitions.h 2022-09-18 20:31:34.000000000 +0200 @@ -25,11 +25,11 @@ #include <libfvde/types.h> -#define LIBFVDE_VERSION 20220807 +#define LIBFVDE_VERSION 20220915 /* The version string */ -#define LIBFVDE_VERSION_STRING "20220807" +#define LIBFVDE_VERSION_STRING "20220915" /* The file access * bit 1 set to 1 for read access diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libfvde-20220807/libfvde/libfvde.rc new/libfvde-20220915/libfvde/libfvde.rc --- old/libfvde-20220807/libfvde/libfvde.rc 2022-08-07 21:11:02.000000000 +0200 +++ new/libfvde-20220915/libfvde/libfvde.rc 2022-09-18 20:31:34.000000000 +0200 @@ -22,12 +22,12 @@ BLOCK "040904E4" BEGIN VALUE "FileDescription", "Library to access the FileVault Drive Encryption (FVDE) format\0" - VALUE "FileVersion", "20220807" "\0" + VALUE "FileVersion", "20220915" "\0" VALUE "InternalName", "libfvde.dll\0" VALUE "LegalCopyright", "(C) 2011-2022, Omar Choudary <choudary.o...@gmail.com>, Joachim Metz <joachim.m...@gmail.com>\0" VALUE "OriginalFilename", "libfvde.dll\0" VALUE "ProductName", "libfvde\0" - VALUE "ProductVersion", "20220807" "\0" + VALUE "ProductVersion", "20220915" "\0" VALUE "Comments", "For more information visit https://github.com/libyal/libfvde/\0" END END diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libfvde-20220807/libfvde/libfvde_bit_stream.c new/libfvde-20220915/libfvde/libfvde_bit_stream.c --- old/libfvde-20220807/libfvde/libfvde_bit_stream.c 2022-08-07 20:26:37.000000000 +0200 +++ new/libfvde-20220915/libfvde/libfvde_bit_stream.c 2022-09-15 05:44:06.000000000 +0200 @@ -272,9 +272,12 @@ { read_number_of_bits = bit_stream->bit_buffer_size; } - read_value_32bit = bit_stream->bit_buffer; - safe_value_32bit <<= remaining_number_of_bits; + read_value_32bit = bit_stream->bit_buffer; + if( remaining_number_of_bits < number_of_bits ) + { + safe_value_32bit <<= remaining_number_of_bits; + } if( bit_stream->storage_type == LIBFVDE_BIT_STREAM_STORAGE_TYPE_BYTE_BACK_TO_FRONT ) { if( read_number_of_bits < 32 ) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libfvde-20220807/libfvde/libfvde_definitions.h new/libfvde-20220915/libfvde/libfvde_definitions.h --- old/libfvde-20220807/libfvde/libfvde_definitions.h 2022-08-07 21:11:02.000000000 +0200 +++ new/libfvde-20220915/libfvde/libfvde_definitions.h 2022-09-18 20:31:34.000000000 +0200 @@ -38,11 +38,11 @@ * for local use of libfvde */ #else -#define LIBFVDE_VERSION 20220807 +#define LIBFVDE_VERSION 20220915 /* The version string */ -#define LIBFVDE_VERSION_STRING "20220807" +#define LIBFVDE_VERSION_STRING "20220915" /* The file access * bit 1 set to 1 for read access diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libfvde-20220807/libfvde/libfvde_huffman_tree.h new/libfvde-20220915/libfvde/libfvde_huffman_tree.h --- old/libfvde-20220807/libfvde/libfvde_huffman_tree.h 2022-08-07 20:25:56.000000000 +0200 +++ new/libfvde-20220915/libfvde/libfvde_huffman_tree.h 2022-09-15 05:44:06.000000000 +0200 @@ -20,8 +20,8 @@ * along with this program. If not, see <https://www.gnu.org/licenses/>. */ -#if !defined( _LIBMODI_HUFFMAN_TREE_H ) -#define _LIBMODI_HUFFMAN_TREE_H +#if !defined( _LIBFVDE_HUFFMAN_TREE_H ) +#define _LIBFVDE_HUFFMAN_TREE_H #include <common.h> #include <types.h> @@ -76,5 +76,5 @@ } #endif -#endif /* !defined( _LIBMODI_HUFFMAN_TREE_H ) */ +#endif /* !defined( _LIBFVDE_HUFFMAN_TREE_H ) */ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libfvde-20220807/libfvde/libfvde_metadata.c new/libfvde-20220915/libfvde/libfvde_metadata.c --- old/libfvde-20220807/libfvde/libfvde_metadata.c 2022-08-07 20:20:38.000000000 +0200 +++ new/libfvde-20220915/libfvde/libfvde_metadata.c 2022-09-15 05:56:15.000000000 +0200 @@ -240,8 +240,7 @@ return( -1 ); } -/* TODO data size check */ - if( ( block_data_size < 48 ) + if( ( block_data_size < 192 ) || ( block_data_size > (size_t) SSIZE_MAX ) ) { libcerror_error_set( @@ -588,7 +587,7 @@ return( -1 ); } if( ( volume_groups_descriptor_offset < 248 ) - || ( volume_groups_descriptor_offset > io_handle->metadata_size ) ) + || ( volume_groups_descriptor_offset > block_data_size ) ) { libcerror_error_set( error, @@ -602,14 +601,14 @@ #if defined( HAVE_DEBUG_OUTPUT ) if( libcnotify_verbose != 0 ) { - if( block_data_offset < ( io_handle->metadata_size - 64 ) ) + if( block_data_offset < ( block_data_size - 64 ) ) { libcnotify_printf( "%s: remaining data:\n", function ); libcnotify_print_data( &( block_data[ block_data_offset ] ), - io_handle->metadata_size - ( block_data_offset + 64 ), + block_data_size - ( block_data_offset + 64 ), LIBCNOTIFY_PRINT_DATA_FLAG_GROUP_DATA ); } } @@ -695,7 +694,7 @@ metadata->encrypted_metadata_size *= io_handle->block_size; if( ( xml_offset < 248 ) - || ( xml_offset > io_handle->metadata_size ) ) + || ( xml_offset > block_data_size ) ) { libcerror_error_set( error, @@ -710,6 +709,7 @@ if( libfvde_metadata_read_volume_group_plist( metadata, &( block_data[ xml_offset - 64 ] ), + block_data_size - xml_offset, error ) != 1 ) { libcerror_error_set( @@ -739,6 +739,7 @@ int libfvde_metadata_read_volume_group_plist( libfvde_metadata_t *metadata, const uint8_t *xml_plist_data, + size_t xml_plist_data_size, libcerror_error_t **error ) { libfplist_property_t *array_entry_property = NULL; @@ -790,6 +791,18 @@ return( -1 ); } + if( ( xml_plist_data_size < 5 ) + || ( xml_plist_data_size > (size_t) SSIZE_MAX ) ) + { + libcerror_error_set( + error, + LIBCERROR_ERROR_DOMAIN_ARGUMENTS, + LIBCERROR_ARGUMENT_ERROR_VALUE_OUT_OF_BOUNDS, + "%s: invalid XML plist data size value out of bounds.", + function ); + + return( -1 ); + } /* TODO return 0 if not a valid plist? */ if( ( xml_plist_data[ 0 ] == (uint8_t) '<' ) && ( xml_plist_data[ 1 ] == (uint8_t) 'd' ) @@ -808,20 +821,10 @@ #endif /* TODO for now determine the XML string length */ /* TODO refactor this to a separate function */ - xml_length = narrow_string_length( - (char *) xml_plist_data ); + xml_length = strnlen( + (char *) xml_plist_data, + xml_plist_data_size ); - if( xml_length > (size_t) ( INT_MAX - 1 ) ) - { - libcerror_error_set( - error, - LIBCERROR_ERROR_DOMAIN_RUNTIME, - LIBCERROR_RUNTIME_ERROR_VALUE_OUT_OF_BOUNDS, - "%s: invalid XML length value out of bounds.", - function ); - - goto on_error; - } if( libfplist_property_list_initialize( &property_list, error ) != 1 ) @@ -1269,8 +1272,7 @@ return( -1 ); } -/* TODO a minimal size check */ - if( ( io_handle->metadata_size == 0 ) + if( ( io_handle->metadata_size < 8192 ) || ( io_handle->metadata_size > (uint32_t) MEMORY_MAXIMUM_ALLOCATION_SIZE ) ) { libcerror_error_set( @@ -1343,7 +1345,7 @@ if( libfvde_metadata_block_read_data( metadata_block, metadata_block_data, - 8192, + (size_t) io_handle->metadata_size, error ) != 1 ) { libcerror_error_set( diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libfvde-20220807/libfvde/libfvde_metadata.h new/libfvde-20220915/libfvde/libfvde_metadata.h --- old/libfvde-20220807/libfvde/libfvde_metadata.h 2022-08-07 20:20:38.000000000 +0200 +++ new/libfvde-20220915/libfvde/libfvde_metadata.h 2022-09-15 05:48:55.000000000 +0200 @@ -100,6 +100,7 @@ int libfvde_metadata_read_volume_group_plist( libfvde_metadata_t *metadata, const uint8_t *xml_plist_data, + size_t xml_plist_data_size, libcerror_error_t **error ); int libfvde_metadata_read_file_io_handle( diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libfvde-20220807/libfvde/libfvde_metadata_block.c new/libfvde-20220915/libfvde/libfvde_metadata_block.c --- old/libfvde-20220807/libfvde/libfvde_metadata_block.c 2022-08-07 20:20:38.000000000 +0200 +++ new/libfvde-20220915/libfvde/libfvde_metadata_block.c 2022-09-15 05:44:06.000000000 +0200 @@ -273,24 +273,14 @@ return( -1 ); } - if( block_data_size > (size_t) SSIZE_MAX ) + if( ( block_data_size < sizeof( fvde_metadata_block_header_t ) ) + || ( block_data_size > (size_t) SSIZE_MAX ) ) { libcerror_error_set( error, LIBCERROR_ERROR_DOMAIN_ARGUMENTS, - LIBCERROR_ARGUMENT_ERROR_VALUE_EXCEEDS_MAXIMUM, - "%s: invalid block data size value exceeds maximum.", - function ); - - return( -1 ); - } - if( block_data_size < sizeof( fvde_metadata_block_header_t ) ) - { - libcerror_error_set( - error, - LIBCERROR_ERROR_DOMAIN_ARGUMENTS, - LIBCERROR_ARGUMENT_ERROR_VALUE_TOO_SMALL, - "%s: block data size value too small.", + LIBCERROR_ARGUMENT_ERROR_VALUE_OUT_OF_BOUNDS, + "%s: block data size value out of bounds.", function ); return( -1 ); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libfvde-20220807/libfvde.spec new/libfvde-20220915/libfvde.spec --- old/libfvde-20220807/libfvde.spec 2022-08-07 21:11:02.000000000 +0200 +++ new/libfvde-20220915/libfvde.spec 2022-09-18 20:31:34.000000000 +0200 @@ -1,5 +1,5 @@ Name: libfvde -Version: 20220807 +Version: 20220915 Release: 1 Summary: Library to access the FileVault Drive Encryption (FVDE) format Group: System Environment/Libraries @@ -101,6 +101,6 @@ %{_mandir}/man1/* %changelog -* Sun Aug 7 2022 Joachim Metz <joachim.m...@gmail.com> 20220807-1 +* Sun Sep 18 2022 Joachim Metz <joachim.m...@gmail.com> 20220915-1 - Auto-generated diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libfvde-20220807/tests/fvde_test_metadata.c new/libfvde-20220915/tests/fvde_test_metadata.c --- old/libfvde-20220807/tests/fvde_test_metadata.c 2022-08-07 20:22:27.000000000 +0200 +++ new/libfvde-20220915/tests/fvde_test_metadata.c 2022-09-15 05:57:28.000000000 +0200 @@ -329,6 +329,7 @@ result = libfvde_metadata_read_volume_group_plist( metadata, fvde_test_metadata_volume_group_plist_data1, + 358, &error ); FVDE_TEST_ASSERT_EQUAL_INT( @@ -345,6 +346,7 @@ result = libfvde_metadata_read_volume_group_plist( NULL, fvde_test_metadata_volume_group_plist_data1, + 358, &error ); FVDE_TEST_ASSERT_EQUAL_INT( @@ -362,6 +364,43 @@ result = libfvde_metadata_read_volume_group_plist( metadata, NULL, + 358, + &error ); + + FVDE_TEST_ASSERT_EQUAL_INT( + "result", + result, + -1 ); + + FVDE_TEST_ASSERT_IS_NOT_NULL( + "error", + error ); + + libcerror_error_free( + &error ); + + result = libfvde_metadata_read_volume_group_plist( + metadata, + fvde_test_metadata_volume_group_plist_data1, + (size_t) SSIZE_MAX + 1, + &error ); + + FVDE_TEST_ASSERT_EQUAL_INT( + "result", + result, + -1 ); + + FVDE_TEST_ASSERT_IS_NOT_NULL( + "error", + error ); + + libcerror_error_free( + &error ); + + result = libfvde_metadata_read_volume_group_plist( + metadata, + fvde_test_metadata_volume_group_plist_data1, + 0, &error ); FVDE_TEST_ASSERT_EQUAL_INT( diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libfvde-20220807/tests/test_runner.sh new/libfvde-20220915/tests/test_runner.sh --- old/libfvde-20220807/tests/test_runner.sh 2022-08-07 20:42:52.000000000 +0200 +++ new/libfvde-20220915/tests/test_runner.sh 2022-09-15 05:44:10.000000000 +0200 @@ -1,7 +1,7 @@ #!/bin/bash # Bash functions to run an executable for testing. # -# Version: 20220807 +# Version: 20220901 # # When CHECK_WITH_ASAN is set to a non-empty value the test executable # is run with asan, otherwise it is run without. @@ -190,14 +190,24 @@ find_binary_library_path() { local TEST_EXECUTABLE=$1; - local LIBRARY_NAME="${TEST_EXECUTABLE}"; + local LIBRARY_NAME=`dirname ${TEST_EXECUTABLE}`; - echo ${LIBRARY_NAME} | grep 'tools' > /dev/null 2>&1; + local NAME=`basename ${LIBRARY_NAME}`; - if test $? -eq ${EXIT_SUCCESS}; + if test ${NAME} = ".libs"; then LIBRARY_NAME=`dirname ${LIBRARY_NAME}`; + NAME=`basename ${LIBRARY_NAME}`; + fi + if test ${NAME} = "tests"; + then LIBRARY_NAME=`dirname ${LIBRARY_NAME}`; + NAME=`basename ${LIBRARY_NAME}`; + fi + echo ${LIBRARY_NAME} | grep 'tools' > /dev/null 2>&1; + + if test $? -eq ${EXIT_SUCCESS}; + then LIBRARY_NAME=`basename ${LIBRARY_NAME} | sed 's/\(.*\)tools$/lib\1/'`; else LIBRARY_NAME=`basename ${LIBRARY_NAME} | sed 's/^py//' | sed 's/^\([^_]*\)_test_.*$/lib\1/'`;