diff --git a/libmariadb/mariadb_lib.c b/libmariadb/mariadb_lib.c index 1db7cf34..b4a36585 100644 --- a/libmariadb/mariadb_lib.c +++ b/libmariadb/mariadb_lib.c @@ -3313,10 +3313,17 @@ mysql_refresh(MYSQL *mysql,uint options) int STDCALL mysql_kill(MYSQL *mysql,ulong pid) { - char buff[12]; - int4store(buff,pid); - /* if we kill our own thread, reading the response packet will fail */ - return(ma_simple_command(mysql, COM_PROCESS_KILL,buff,4,0,0)); + char buff[16]; + + /* process id can't be larger than 4-bytes */ + if (pid & (~0xFFFFFFFFUL)) + { + my_set_error(mysql, CR_CONNECTION_ERROR, SQLSTATE_UNKNOWN, 0); + return 1; + } + + snprintf(buff, sizeof buff, "KILL %lu", pid); + return mysql_real_query(mysql, (char *)buff, (ulong)strlen(buff)); }