From 27319bfc884c2817c7c5f4fd1046903dc2e419e0 Mon Sep 17 00:00:00 2001 From: Pali Rohár Date: Thu, 23 May 2019 20:24:12 +0200 Subject: Add tests for non-existent file and file with too long name --- test.c | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) diff --git a/test.c b/test.c index d99fd52..f7a20d7 100644 --- a/test.c +++ b/test.c @@ -83,6 +83,8 @@ int main() int (*nonexistentfunction)( void ); int ret; HMODULE library3; + char toolongfile[32767]; + DWORD code; #ifdef _DEBUG _CrtSetReportMode(_CRT_WARN, _CRTDBG_MODE_FILE); @@ -93,6 +95,54 @@ int main() _CrtSetReportFile(_CRT_ASSERT, _CRTDBG_FILE_STDOUT); #endif + library = dlopen( "nonexistentfile.dll", RTLD_GLOBAL ); + if( library ) + { + printf( "ERROR\tNon-existent file nonexistentfile.dll was opened via dlopen\n" ); + RETURN_ERROR; + } + error = dlerror( ); + if( !error ) + { + printf( "ERROR\tNo error from dlopen for non-existent file\n" ); + RETURN_ERROR; + } + else + printf( "SUCCESS\tCould not open non-existent file nonexistentfile.dll: %s\n", error ); + + memset( toolongfile, 'X', sizeof( toolongfile ) - 5 ); + memcpy( toolongfile + sizeof( toolongfile ) - 5, ".dll", 5 ); + + library = dlopen( toolongfile, RTLD_GLOBAL ); + if( library ) + { + printf( "ERROR\tFile with too long file name was opened via dlopen\n" ); + RETURN_ERROR; + } + error = dlerror( ); + if( !error ) + { + printf( "ERROR\tNo error from dlopen for file with too long file name\n" ); + RETURN_ERROR; + } + else + printf( "SUCCESS\tCould not open file with too long file name: %s\n", error ); + + library3 = LoadLibraryA( toolongfile ); + code = GetLastError( ); + if( library3 ) + { + printf( "ERROR\tFile with too long file name was opened via WINAPI\n" ); + RETURN_ERROR; + } + else if( code != ERROR_FILENAME_EXCED_RANGE ) + { + printf( "ERROR\tFile with too long file name was processed via WINAPI: %lu\n", (unsigned long)code ); + RETURN_ERROR; + } + else + printf( "SUCCESS\tCould not open file with too long file name via WINAPI: %lu\n", (unsigned long)code ); + library2 = dlopen( "testdll2.dll", RTLD_GLOBAL ); if( !library2 ) { -- cgit v1.2.3-55-g6feb