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:
parent
ffdd106588
commit
569cb3dbbf
@ -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
|
||||
|
18
plugins/nonbmp/makefile.mak
Normal file
18
plugins/nonbmp/makefile.mak
Normal 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
87
plugins/nonbmp/nonbmp.c
Normal 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;
|
||||
}
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user