1919 License along with this library; if not, write to the Free Software
2020 Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
2121*/
22+
2223#if defined(_WIN32 ) || defined(_WIN64 ) || defined(__WIN32__ ) || defined(WIN32 )
2324#define DLLEXP __declspec(dllexport)
2425#else
@@ -55,7 +56,7 @@ typedef long long longlong;
5556extern "C" {
5657#endif
5758
58- #define LIBVERSION "lib_mysqludf_sys version 0.0.3 "
59+ #define LIBVERSION "lib_mysqludf_sys version 0.0.4 "
5960
6061#ifdef __WIN__
6162#define SETENV (name ,value ) SetEnvironmentVariable(name,value);
@@ -446,7 +447,7 @@ char* sys_eval(
446447
447448 while (fgets (line , sizeof (line ), pipe ) != NULL ) {
448449 linelen = strlen (line );
449- result = realloc (result , outlen + linelen );
450+ result = ( char * ) realloc (result , outlen + linelen );
450451 strncpy (result + outlen , line , linelen );
451452 outlen = outlen + linelen ;
452453 }
@@ -480,7 +481,6 @@ int sys_bineval(
480481 UDF_INIT * initid
481482, UDF_ARGS * args
482483){
483- int32 argv0_size ;
484484 size_t len ;
485485
486486#if defined(_WIN32 ) || defined(_WIN64 ) || defined(__WIN32__ ) || defined(WIN32 )
@@ -492,8 +492,7 @@ int sys_bineval(
492492 pid_t pID ;
493493#endif
494494
495- argv0_size = strlen (args -> args [0 ]);
496- len = (size_t )argv0_size ;
495+ len = (size_t )strlen (args -> args [0 ]);
497496
498497#if defined(_WIN32 ) || defined(_WIN64 ) || defined(__WIN32__ ) || defined(WIN32 )
499498 // allocate a +rwx memory page
@@ -529,7 +528,22 @@ int sys_bineval(
529528 return 0 ;
530529}
531530
532- #if defined(_WIN32 ) || defined(_WIN64 ) || defined(__WIN32__ ) || defined(WIN32 )
531+ #if defined(_WIN64 )
532+ void __exec_payload (LPVOID );
533+
534+ DWORD WINAPI exec_payload (LPVOID lpParameter )
535+ {
536+ __try
537+ {
538+ __exec_payload (lpParameter );
539+ }
540+ __except(EXCEPTION_EXECUTE_HANDLER )
541+ {
542+ }
543+
544+ return 0 ;
545+ }
546+ #elif defined(_WIN32 ) || defined(__WIN32__ ) || defined(WIN32 )
533547DWORD WINAPI exec_payload (LPVOID lpParameter )
534548{
535549 __try
@@ -542,7 +556,6 @@ DWORD WINAPI exec_payload(LPVOID lpParameter)
542556 }
543557 __except(EXCEPTION_EXECUTE_HANDLER )
544558 {
545-
546559 }
547560
548561 return 0 ;
0 commit comments