mirror of
https://github.com/znc/znc.git
synced 2026-03-28 17:42:41 +01:00
Fixed bug when escaping FROM html
git-svn-id: https://znc.svn.sourceforge.net/svnroot/znc/trunk@715 726aef4b-f618-498e-8847-2d620e286838
This commit is contained in:
12
String.cpp
12
String.cpp
@@ -2,7 +2,6 @@
|
||||
#include "String.h"
|
||||
#include "FileUtils.h"
|
||||
#include "MD5.h"
|
||||
#include "main.h"
|
||||
|
||||
const char* g_szHTMLescapes[256] = {
|
||||
"�", 0, 0, 0, 0, 0, 0, 0, 0, 0, // 0-9
|
||||
@@ -273,17 +272,17 @@ CString CString::Escape_n(EEscape eFrom, EEscape eTo) const {
|
||||
const unsigned char *p = (const unsigned char*) data();
|
||||
unsigned int iLength = length();
|
||||
sRet.reserve(iLength *3);
|
||||
unsigned char ch = 0;
|
||||
unsigned int iMaxLen = (eFrom == EHTML) ? 20 : 0;
|
||||
unsigned char pTmp[iMaxLen +1];
|
||||
unsigned int iCounted = 0;
|
||||
|
||||
for (unsigned int a = 0; a < iLength; a++, p = pStart + a) {
|
||||
unsigned char ch = 0;
|
||||
|
||||
switch (eFrom) {
|
||||
case EHTML:
|
||||
if ((*p == '&') && (strnchr((unsigned char*) p, ';', iMaxLen, pTmp, &iCounted))) {
|
||||
if ((iCounted >= 3) && (pTmp[1] == '#')) {
|
||||
// do XML and HTML a <
|
||||
if ((iCounted >= 3) && (pTmp[1] == '#')) { // do XML and HTML a <
|
||||
int base = 10;
|
||||
|
||||
if ((pTmp[2] & 0xDF) == 'X') {
|
||||
@@ -293,8 +292,7 @@ CString CString::Escape_n(EEscape eFrom, EEscape eTo) const {
|
||||
char* endptr = NULL;
|
||||
unsigned int b = strtol((const char*) (pTmp +2 + (base == 16)), &endptr, base);
|
||||
|
||||
if ( ( *endptr == ';' ) && ( b <= 255 ) )
|
||||
{ // incase they do something like �
|
||||
if ((*endptr == ';') && (b <= 255)) { // incase they do something like �
|
||||
ch = b;
|
||||
a += iCounted;
|
||||
break;
|
||||
@@ -302,7 +300,7 @@ CString CString::Escape_n(EEscape eFrom, EEscape eTo) const {
|
||||
}
|
||||
|
||||
for (unsigned int c = 0; c < 256; c++) {
|
||||
if (strcmp(g_szHTMLescapes[c], (const char*) &pTmp) == 0) {
|
||||
if (g_szHTMLescapes[c] && strcmp(g_szHTMLescapes[c], (const char*) &pTmp) == 0) {
|
||||
ch = c;
|
||||
break;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user