Differences between 20071216 and 20071221 diff -p -N -d -r -U2 winsup-src-20071216/cygwin-snapshot-20071216-1/winsup/cygwin/cygwin.din winsup-src-20071221/cygwin-snapshot-20071221-1/winsup/cygwin/cygwin.din --- winsup-src-20071216/cygwin-snapshot-20071216-1/winsup/cygwin/cygwin.din 2007-07-06 20:05:44.000000000 +0000 +++ winsup-src-20071221/cygwin-snapshot-20071221-1/winsup/cygwin/cygwin.din 2007-12-21 15:05:56.000000000 +0000 @@ -1664,4 +1664,6 @@ _waitpid = waitpid SIGFE warn SIGFE warnx SIGFE +wcpcpy NOSIGFE +wcpncpy NOSIGFE wcrtomb NOSIGFE wcscat NOSIGFE diff -p -N -d -r -U2 winsup-src-20071216/cygwin-snapshot-20071216-1/winsup/cygwin/include/cygwin/version.h winsup-src-20071221/cygwin-snapshot-20071221-1/winsup/cygwin/include/cygwin/version.h --- winsup-src-20071216/cygwin-snapshot-20071216-1/winsup/cygwin/include/cygwin/version.h 2007-12-16 23:34:47.000000000 +0000 +++ winsup-src-20071221/cygwin-snapshot-20071221-1/winsup/cygwin/include/cygwin/version.h 2007-12-21 15:06:01.000000000 +0000 @@ -319,4 +319,5 @@ details. */ 176: Export wcstol, wcstoll, wcstoul, wcstoull, wcsxfrm. 177: Export sys_sigabbrev + 178: Export wcpcpy, wcpncpy. */ @@ -324,5 +325,5 @@ details. */ #define CYGWIN_VERSION_API_MAJOR 0 -#define CYGWIN_VERSION_API_MINOR 177 +#define CYGWIN_VERSION_API_MINOR 178 /* There is also a compatibity version number associated with the diff -p -N -d -r -U2 winsup-src-20071216/cygwin-snapshot-20071216-1/winsup/cygwin/libc/memmem.cc winsup-src-20071221/cygwin-snapshot-20071221-1/winsup/cygwin/libc/memmem.cc --- winsup-src-20071216/cygwin-snapshot-20071216-1/winsup/cygwin/libc/memmem.cc 2005-11-08 22:08:39.000000000 +0000 +++ winsup-src-20071221/cygwin-snapshot-20071221-1/winsup/cygwin/libc/memmem.cc 2007-12-21 15:05:56.000000000 +0000 @@ -46,6 +46,6 @@ memmem (const void *l, size_t l_len, /* we need something to compare */ - if (l_len == 0 || s_len == 0) - return NULL; + if (s_len == 0) + return (void *) l; /* "s" must be smaller or equal to "l" */ diff -p -N -d -r -U2 winsup-src-20071216/cygwin-snapshot-20071216-1/winsup/utils/bloda.cc winsup-src-20071221/cygwin-snapshot-20071221-1/winsup/utils/bloda.cc --- winsup-src-20071216/cygwin-snapshot-20071216-1/winsup/utils/bloda.cc 2007-08-03 19:41:48.000000000 +0000 +++ winsup-src-20071221/cygwin-snapshot-20071221-1/winsup/utils/bloda.cc 2007-12-21 15:05:57.000000000 +0000 @@ -105,4 +105,11 @@ static const size_t num_of_dodgy_apps = VOID NTAPI (*pRtlFreeUnicodeString)(PUNICODE_STRING) = NULL; +NTSTATUS NTAPI (*pNtQuerySystemInformation) (SYSTEM_INFORMATION_CLASS, + PVOID, ULONG, PULONG) = NULL; + +NTSTATUS NTAPI (*pRtlAnsiStringToUnicodeString) (PUNICODE_STRING, PANSI_STRING, + BOOLEAN) = NULL; + + static PSYSTEM_PROCESSES get_process_list (void) @@ -111,5 +118,5 @@ get_process_list (void) PSYSTEM_PROCESSES pslist = (PSYSTEM_PROCESSES) malloc (n_procs * sizeof *pslist); - while (NtQuerySystemInformation (SystemProcessesAndThreadsInformation, + while (pNtQuerySystemInformation (SystemProcessesAndThreadsInformation, pslist, n_procs * sizeof *pslist, 0) == STATUS_INFO_LENGTH_MISMATCH) { @@ -127,5 +134,5 @@ get_module_list (void) PSYSTEM_MODULE_INFORMATION modlist = (PSYSTEM_MODULE_INFORMATION) malloc (modsize); - while (NtQuerySystemInformation (SystemModuleInformation, + while (pNtQuerySystemInformation (SystemModuleInformation, modlist, modsize, NULL) == STATUS_INFO_LENGTH_MISMATCH) { @@ -285,5 +292,5 @@ detect_dodgy_app (const struct bad_app_d ansiname.Length = ansiname.MaximumLength = strlen (det->param); ansiname.Buffer = (CHAR *) det->param; - rv = RtlAnsiStringToUnicodeString (&unicodename, &ansiname, TRUE); + rv = pRtlAnsiStringToUnicodeString (&unicodename, &ansiname, TRUE); if (rv != STATUS_SUCCESS) { @@ -292,10 +299,5 @@ detect_dodgy_app (const struct bad_app_d } found = find_process_in_list (pslist, &unicodename); - if (!pRtlFreeUnicodeString) - pRtlFreeUnicodeString = (VOID NTAPI (*)(PUNICODE_STRING)) GetProcAddress (LoadLibrary ("ntdll.dll"), "RtlFreeUnicodeString"); - if (pRtlFreeUnicodeString) - pRtlFreeUnicodeString (&unicodename); - else - printf ("leaking mem...oops\n"); + pRtlFreeUnicodeString (&unicodename); if (found) { @@ -338,4 +340,23 @@ dump_dodgy_apps (int verbose) PSYSTEM_PROCESSES pslist; PSYSTEM_MODULE_INFORMATION modlist; + HMODULE ntdll; + + if ((ntdll = LoadLibrary ("ntdll.dll")) == NULL) + { + puts ("Skipping dodgy app check on Win9x/ME."); + return; + } + +#define GPA(func,rv) \ + if ((p##func = (rv) GetProcAddress (ntdll, #func)) == NULL) \ + { \ + puts ("Can't GetProcAddress() for " #func ", " \ + "skipping dodgy app check."); \ + return; \ + } + GPA(NtQuerySystemInformation, NTSTATUS NTAPI (*) (SYSTEM_INFORMATION_CLASS,PVOID,ULONG,PULONG)); + GPA(RtlFreeUnicodeString, VOID NTAPI (*)(PUNICODE_STRING)); + GPA(RtlAnsiStringToUnicodeString, NTSTATUS NTAPI (*)(PUNICODE_STRING,PANSI_STRING,BOOLEAN)); +#undef GPA /* Read system info for detect testing. */ diff -p -N -d -r -U2 winsup-src-20071216/cygwin-snapshot-20071216-1/winsup/utils/Makefile.in winsup-src-20071221/cygwin-snapshot-20071221-1/winsup/utils/Makefile.in --- winsup-src-20071216/cygwin-snapshot-20071216-1/winsup/utils/Makefile.in 2007-08-03 19:41:48.000000000 +0000 +++ winsup-src-20071221/cygwin-snapshot-20071221-1/winsup/utils/Makefile.in 2007-12-21 15:05:57.000000000 +0000 @@ -105,8 +105,8 @@ ifeq "$(libz)" "" endif ifdef VERBOSE - $(CXX) $(MINGW_CXXFLAGS) -o $@ ${wordlist 1,4,$^} -B$(mingw_build)/ $(MINGW_LDFLAGS) $(libz) -lntdll + $(CXX) $(MINGW_CXXFLAGS) -o $@ ${wordlist 1,4,$^} -B$(mingw_build)/ $(MINGW_LDFLAGS) $(libz) else - @echo $(CXX) -o $@ ${wordlist 1,4,$^} ${filter-out -B%, $(MINGW_CXXFLAGS) $(MINGW_LDFLAGS)} $(libz) -lntdll;\ - $(CXX) $(MINGW_CXXFLAGS) -o $@ ${wordlist 1,4,$^} -B$(mingw_build)/ $(MINGW_LDFLAGS) $(libz) -lntdll + @echo $(CXX) -o $@ ${wordlist 1,4,$^} ${filter-out -B%, $(MINGW_CXXFLAGS) $(MINGW_LDFLAGS)} $(libz);\ + $(CXX) $(MINGW_CXXFLAGS) -o $@ ${wordlist 1,4,$^} -B$(mingw_build)/ $(MINGW_LDFLAGS) $(libz) endif