quick v3 HelperFunc 在没有调用setXXTEAKeyAndSign方法时获取文件数据为空

先贴上V3 对应源码

unsigned char* HelperFunc::getFileData(const char* pszFileName, const char* pszMode, unsigned long * pSize)
{
ssize_t size;
unsigned char* buf = FileUtils::getInstance()->getFileData(pszFileName, pszMode, &size);
if (NULL==buf || size<1) return NULL;

LuaStack* stack = LuaEngine::getInstance()->getLuaStack();
if (NULL==stack) {
    return NULL;
}
int xxteaKeyLen = 0;
const char *xxteaKey = stack->getXXTEAKey(&xxteaKeyLen);
int xxteaSignLen = 0;
const char *xxteaSign = stack->getXXTEASign(&xxteaSignLen);
if (!xxteaKey || !xxteaSign) {
    return NULL;
}

unsigned char* buffer = NULL;
bool isXXTEA = true;
for (int i = 0; isXXTEA && i<xxteaSignLen && i<size; ++i) {
isXXTEA = buf* == xxteaSign*;
}

if (isXXTEA) { // decrypt XXTEA
    xxtea_long len = 0;
    buffer = xxtea_decrypt(
                buf + xxteaSignLen,
                (xxtea_long)size - (xxtea_long)xxteaSignLen,
                (unsigned char*)xxteaKey,
                (xxtea_long)xxteaKeyLen,
                &len);
    delete ]buf;
    buf = NULL;
    size = len;
} else {
    buffer = buf;
}


if (pSize) *pSize = size;
return buffer;

}

红色部分判断逻辑是有问题的。

修改后的逻辑。
unsigned char* HelperFunc::getFileData(const char* pszFileName, const char* pszMode, unsigned long * pSize)
{
ssize_t size;
unsigned char* buf = FileUtils::getInstance()->getFileData(pszFileName, pszMode, &size);
if (NULL==buf || size<1) return NULL;

LuaStack* stack = LuaEngine::getInstance()->getLuaStack();
if (NULL==stack) {
    return NULL;
}
int xxteaKeyLen = 0;
const char *xxteaKey = stack->getXXTEAKey(&xxteaKeyLen);
int xxteaSignLen = 0;
const char *xxteaSign = stack->getXXTEASign(&xxteaSignLen);
unsigned char* buffer = NULL;
if (xxteaKey && xxteaSign) {
    bool isXXTEA = true;
    for (int i = 0; isXXTEA && i<xxteaSignLen && i<size; ++i) {
        isXXTEA = buf* == xxteaSign*;
    }

    if (isXXTEA) { // decrypt XXTEA
        xxtea_long len = 0;
        buffer = xxtea_decrypt(
                               buf + xxteaSignLen,
                               (xxtea_long)size - (xxtea_long)xxteaSignLen,
                               (unsigned char*)xxteaKey,
                               (xxtea_long)xxteaKeyLen,
                               &len);
        delete ]buf;
        buf = NULL;
        size = len;
    } else {
        buffer = buf;
    }
}
else {
    buffer = buf;
}


if (pSize) *pSize = size;
return buffer;

}


谢谢,可以递交一个PR吗?

v3没有家里还没下载下来,如果方便的话你帮提交一个吧。

这样啊,好的