1
0
mirror of https://github.com/moparisthebest/hexchat synced 2024-12-26 01:28:52 -05:00

add Non-BMP plugin against GTK+ exploits

This commit is contained in:
Berke Viktor 2012-01-18 09:25:05 +01:00
parent ffdd106588
commit 569cb3dbbf
7 changed files with 115 additions and 0 deletions

View File

@ -13,6 +13,8 @@ all:
@-$(MAKE) /nologo /s /f makefile.mak $@
@cd ..\mpcinfo
@-$(MAKE) /nologo /s /f makefile.mak $@
@cd ..\nonbmp
@-$(MAKE) /nologo /s /f makefile.mak $@
@cd ..\python
@-$(MAKE) /nologo /s /f makefile.mak $@
@cd ..\tcl
@ -45,6 +47,8 @@ clean:
@-$(MAKE) /nologo /s /f makefile.mak clean $@
@cd ..\mpcinfo
@-$(MAKE) /nologo /s /f makefile.mak clean $@
@cd ..\nonbmp
@-$(MAKE) /nologo /s /f makefile.mak clean $@
@cd ..\python
@-$(MAKE) /nologo /s /f makefile.mak clean $@
@cd ..\tcl

View File

@ -0,0 +1,18 @@
include "..\..\src\makeinc.mak"
all: nonbmp.obj nonbmp.def
link $(LDFLAGS) $(LIBS) /dll /out:xcnonbmp.dll /def:nonbmp.def nonbmp.obj
nonbmp.def:
echo EXPORTS > nonbmp.def
echo xchat_plugin_init >> nonbmp.def
echo xchat_plugin_deinit >> nonbmp.def
nonbmp.obj: nonbmp.c makefile.mak
cl $(CFLAGS) $(GLIB) /I.. nonbmp.c
clean:
del *.obj
del *.dll
del *.exp
del *.lib

87
plugins/nonbmp/nonbmp.c Normal file
View File

@ -0,0 +1,87 @@
#include <stdlib.h>
#include <glib.h>
#include <string.h>
#include "xchat-plugin.h"
static xchat_plugin *ph;
static const char name[] = "Non-BMP";
static const char desc[] = "Replace non-BMP characters with replacment characters";
static const char version[] = "1.0000";
static int recursing = 0;
static int filter(
char *word[],
char *word_eol[],
void *unused
) {
gunichar *line;
gchar *utf8_line;
glong length;
glong index;
if( recursing ) {
return XCHAT_EAT_NONE;
}
/* the input has already been checked so we can use the _fast version */
line = g_utf8_to_ucs4_fast(
(char *)word_eol[1],
-1, /* NUL terminated input */
&length
);
for( index = 0; index < length; index++ ) {
if( line[ index ] > 0xFFFF ) {
line[ index ] = 0xFFFD; /* replacement character */
}
}
utf8_line = g_ucs4_to_utf8(
line,
-1, /* NUL terminated input */
NULL, /* items read */
NULL, /* items written */
NULL /* ignore conversion error */
);
if( utf8_line == NULL ) {
/* conversion failed ... I guess we are screwed? */
g_free( line );
return XCHAT_EAT_NONE;
}
recursing = 1;
xchat_commandf( ph, "RECV %s", utf8_line );
recursing = 0;
g_free( line );
g_free( utf8_line );
return XCHAT_EAT_ALL;
}
int xchat_plugin_init(
xchat_plugin *plugin_handle,
char **plugin_name,
char **plugin_desc,
char **plugin_version,
char *arg
) {
/* int index = 0;*/
ph = plugin_handle;
*plugin_name = name;
*plugin_desc = desc;
*plugin_version = version;
xchat_hook_server( ph, "RAW LINE", XCHAT_PRI_HIGHEST, filter, (void *)NULL );
xchat_printf (ph, "%s plugin loaded\n", name);
return 1;
}
int
xchat_plugin_deinit (void)
{
xchat_printf (ph, "%s plugin unloaded\n", name);
return 1;
}

View File

@ -62,6 +62,7 @@ copy ..\plugins\fishlim\xcfishlim.dll %XCHAT_DEST%\plugins
copy ..\plugins\lua\xclua.dll %XCHAT_DEST%\plugins
::obs copy ..\plugins\gtkpref\xcgtkpref.dll %XCHAT_DEST%\plugins
copy ..\plugins\mpcinfo\xcmpcinfo.dll %XCHAT_DEST%\plugins
copy ..\plugins\nonbmp\xcnonbmp.dll %XCHAT_DEST%\plugins
copy ..\plugins\perl\xcperl-512.dll %XCHAT_DEST%\plugins
copy ..\plugins\perl\xcperl-514.dll %XCHAT_DEST%\plugins
copy ..\plugins\python\xcpython.dll %XCHAT_DEST%\plugins

View File

@ -64,6 +64,7 @@ copy ..\plugins\fishlim\xcfishlim.dll %XCHAT_DEST%\plugins
copy ..\plugins\lua\xclua.dll %XCHAT_DEST%\plugins
::obs copy ..\plugins\gtkpref\xcgtkpref.dll %XCHAT_DEST%\plugins
copy ..\plugins\mpcinfo\xcmpcinfo.dll %XCHAT_DEST%\plugins
copy ..\plugins\nonbmp\xcnonbmp.dll %XCHAT_DEST%\plugins
copy ..\plugins\perl\xcperl-512.dll %XCHAT_DEST%\plugins
copy ..\plugins\perl\xcperl-514.dll %XCHAT_DEST%\plugins
copy ..\plugins\python\xcpython.dll %XCHAT_DEST%\plugins

View File

@ -39,6 +39,7 @@ Name: "plugins\doat"; Description: "Do At"; Types: full custom; Flags: disableno
Name: "plugins\exec"; Description: "Exec"; Types: full custom; Flags: disablenouninstallwarning
Name: "plugins\fishlim"; Description: "FiSHLiM"; Types: full custom; Flags: disablenouninstallwarning
Name: "plugins\mpcinfo"; Description: "mpcInfo"; Types: full custom; Flags: disablenouninstallwarning
Name: "plugins\nonbmp"; Description: "Non-BMP"; Types: full custom; Flags: disablenouninstallwarning
Name: "plugins\upd"; Description: "Update Checker"; Types: normal full custom; Flags: disablenouninstallwarning
Name: "plugins\winamp"; Description: "Winamp"; Types: full custom; Flags: disablenouninstallwarning
Name: "plugins\winsys"; Description: "WinSys"; Types: full custom; Flags: disablenouninstallwarning
@ -154,6 +155,7 @@ Source: "plugins\xcexec.dll"; DestDir: "{app}\plugins"; Flags: ignoreversion; Co
Source: "plugins\xcfishlim.dll"; DestDir: "{app}\plugins"; Flags: ignoreversion; Components: plugins\fishlim
Source: "etc\music.png"; DestDir: "{app}\etc"; Flags: ignoreversion; Components: plugins\winamp or plugins\mpcinfo
Source: "plugins\xcmpcinfo.dll"; DestDir: "{app}\plugins"; Flags: ignoreversion; Components: plugins\mpcinfo
Source: "plugins\xcnonbmp.dll"; DestDir: "{app}\plugins"; Flags: ignoreversion; Components: plugins\nonbmp
Source: "etc\download.png"; DestDir: "{app}\etc"; Flags: ignoreversion; Components: plugins\upd
Source: "plugins\xcupd.dll"; DestDir: "{app}\plugins"; Flags: ignoreversion; Components: plugins\upd
Source: "plugins\xcwinamp.dll"; DestDir: "{app}\plugins"; Flags: ignoreversion; Components: plugins\winamp

View File

@ -38,6 +38,7 @@ Name: "plugins\doat"; Description: "Do At"; Types: full custom; Flags: disableno
Name: "plugins\exec"; Description: "Exec"; Types: full custom; Flags: disablenouninstallwarning
Name: "plugins\fishlim"; Description: "FiSHLiM"; Types: full custom; Flags: disablenouninstallwarning
Name: "plugins\mpcinfo"; Description: "mpcInfo"; Types: full custom; Flags: disablenouninstallwarning
Name: "plugins\nonbmp"; Description: "Non-BMP"; Types: full custom; Flags: disablenouninstallwarning
Name: "plugins\upd"; Description: "Update Checker"; Types: normal full custom; Flags: disablenouninstallwarning
Name: "plugins\winamp"; Description: "Winamp"; Types: full custom; Flags: disablenouninstallwarning
Name: "plugins\winsys"; Description: "WinSys"; Types: full custom; Flags: disablenouninstallwarning
@ -155,6 +156,7 @@ Source: "plugins\xcexec.dll"; DestDir: "{app}\plugins"; Flags: ignoreversion; Co
Source: "plugins\xcfishlim.dll"; DestDir: "{app}\plugins"; Flags: ignoreversion; Components: plugins\fishlim
Source: "etc\music.png"; DestDir: "{app}\etc"; Flags: ignoreversion; Components: plugins\winamp or plugins\mpcinfo
Source: "plugins\xcmpcinfo.dll"; DestDir: "{app}\plugins"; Flags: ignoreversion; Components: plugins\mpcinfo
Source: "plugins\xcnonbmp.dll"; DestDir: "{app}\plugins"; Flags: ignoreversion; Components: plugins\nonbmp
Source: "etc\download.png"; DestDir: "{app}\etc"; Flags: ignoreversion; Components: plugins\upd
Source: "plugins\xcupd.dll"; DestDir: "{app}\plugins"; Flags: ignoreversion; Components: plugins\upd
Source: "plugins\xcwinamp.dll"; DestDir: "{app}\plugins"; Flags: ignoreversion; Components: plugins\winamp