add Non-BMP plugin against GTK+ exploits
This commit is contained in:
parent
ffdd106588
commit
569cb3dbbf
|
@ -13,6 +13,8 @@ all:
|
||||||
@-$(MAKE) /nologo /s /f makefile.mak $@
|
@-$(MAKE) /nologo /s /f makefile.mak $@
|
||||||
@cd ..\mpcinfo
|
@cd ..\mpcinfo
|
||||||
@-$(MAKE) /nologo /s /f makefile.mak $@
|
@-$(MAKE) /nologo /s /f makefile.mak $@
|
||||||
|
@cd ..\nonbmp
|
||||||
|
@-$(MAKE) /nologo /s /f makefile.mak $@
|
||||||
@cd ..\python
|
@cd ..\python
|
||||||
@-$(MAKE) /nologo /s /f makefile.mak $@
|
@-$(MAKE) /nologo /s /f makefile.mak $@
|
||||||
@cd ..\tcl
|
@cd ..\tcl
|
||||||
|
@ -45,6 +47,8 @@ clean:
|
||||||
@-$(MAKE) /nologo /s /f makefile.mak clean $@
|
@-$(MAKE) /nologo /s /f makefile.mak clean $@
|
||||||
@cd ..\mpcinfo
|
@cd ..\mpcinfo
|
||||||
@-$(MAKE) /nologo /s /f makefile.mak clean $@
|
@-$(MAKE) /nologo /s /f makefile.mak clean $@
|
||||||
|
@cd ..\nonbmp
|
||||||
|
@-$(MAKE) /nologo /s /f makefile.mak clean $@
|
||||||
@cd ..\python
|
@cd ..\python
|
||||||
@-$(MAKE) /nologo /s /f makefile.mak clean $@
|
@-$(MAKE) /nologo /s /f makefile.mak clean $@
|
||||||
@cd ..\tcl
|
@cd ..\tcl
|
||||||
|
|
|
@ -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
|
|
@ -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;
|
||||||
|
}
|
|
@ -62,6 +62,7 @@ copy ..\plugins\fishlim\xcfishlim.dll %XCHAT_DEST%\plugins
|
||||||
copy ..\plugins\lua\xclua.dll %XCHAT_DEST%\plugins
|
copy ..\plugins\lua\xclua.dll %XCHAT_DEST%\plugins
|
||||||
::obs copy ..\plugins\gtkpref\xcgtkpref.dll %XCHAT_DEST%\plugins
|
::obs copy ..\plugins\gtkpref\xcgtkpref.dll %XCHAT_DEST%\plugins
|
||||||
copy ..\plugins\mpcinfo\xcmpcinfo.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-512.dll %XCHAT_DEST%\plugins
|
||||||
copy ..\plugins\perl\xcperl-514.dll %XCHAT_DEST%\plugins
|
copy ..\plugins\perl\xcperl-514.dll %XCHAT_DEST%\plugins
|
||||||
copy ..\plugins\python\xcpython.dll %XCHAT_DEST%\plugins
|
copy ..\plugins\python\xcpython.dll %XCHAT_DEST%\plugins
|
||||||
|
|
|
@ -64,6 +64,7 @@ copy ..\plugins\fishlim\xcfishlim.dll %XCHAT_DEST%\plugins
|
||||||
copy ..\plugins\lua\xclua.dll %XCHAT_DEST%\plugins
|
copy ..\plugins\lua\xclua.dll %XCHAT_DEST%\plugins
|
||||||
::obs copy ..\plugins\gtkpref\xcgtkpref.dll %XCHAT_DEST%\plugins
|
::obs copy ..\plugins\gtkpref\xcgtkpref.dll %XCHAT_DEST%\plugins
|
||||||
copy ..\plugins\mpcinfo\xcmpcinfo.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-512.dll %XCHAT_DEST%\plugins
|
||||||
copy ..\plugins\perl\xcperl-514.dll %XCHAT_DEST%\plugins
|
copy ..\plugins\perl\xcperl-514.dll %XCHAT_DEST%\plugins
|
||||||
copy ..\plugins\python\xcpython.dll %XCHAT_DEST%\plugins
|
copy ..\plugins\python\xcpython.dll %XCHAT_DEST%\plugins
|
||||||
|
|
|
@ -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\exec"; Description: "Exec"; Types: full custom; Flags: disablenouninstallwarning
|
||||||
Name: "plugins\fishlim"; Description: "FiSHLiM"; 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\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\upd"; Description: "Update Checker"; Types: normal full custom; Flags: disablenouninstallwarning
|
||||||
Name: "plugins\winamp"; Description: "Winamp"; Types: full custom; Flags: disablenouninstallwarning
|
Name: "plugins\winamp"; Description: "Winamp"; Types: full custom; Flags: disablenouninstallwarning
|
||||||
Name: "plugins\winsys"; Description: "WinSys"; 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: "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: "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\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: "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\xcupd.dll"; DestDir: "{app}\plugins"; Flags: ignoreversion; Components: plugins\upd
|
||||||
Source: "plugins\xcwinamp.dll"; DestDir: "{app}\plugins"; Flags: ignoreversion; Components: plugins\winamp
|
Source: "plugins\xcwinamp.dll"; DestDir: "{app}\plugins"; Flags: ignoreversion; Components: plugins\winamp
|
||||||
|
|
|
@ -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\exec"; Description: "Exec"; Types: full custom; Flags: disablenouninstallwarning
|
||||||
Name: "plugins\fishlim"; Description: "FiSHLiM"; 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\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\upd"; Description: "Update Checker"; Types: normal full custom; Flags: disablenouninstallwarning
|
||||||
Name: "plugins\winamp"; Description: "Winamp"; Types: full custom; Flags: disablenouninstallwarning
|
Name: "plugins\winamp"; Description: "Winamp"; Types: full custom; Flags: disablenouninstallwarning
|
||||||
Name: "plugins\winsys"; Description: "WinSys"; 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: "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: "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\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: "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\xcupd.dll"; DestDir: "{app}\plugins"; Flags: ignoreversion; Components: plugins\upd
|
||||||
Source: "plugins\xcwinamp.dll"; DestDir: "{app}\plugins"; Flags: ignoreversion; Components: plugins\winamp
|
Source: "plugins\xcwinamp.dll"; DestDir: "{app}\plugins"; Flags: ignoreversion; Components: plugins\winamp
|
||||||
|
|
Loading…
Reference in New Issue