验证数据是否使用 lzo1z 压缩进行压缩
Validate if the data is compressed with lzo1z compression
我正在使用 lzo1z 解压缩来解压缩通过网络发送的数据。现在我需要在解压缩数据之前检查数据是否被压缩。我的代码是这样的:
#include <lzo1z.h>
......
if (lzo_init() != LZO_E_OK)
{
//Error
}
else{
// ** Validation if compressed with lzo1z **
lzoFlag = lzo1z_decompress(buffPointer,ret_in,out,&out_len,wrkmem);
if (lzoFlag == LZO_E_OK)
{
// Success
}
else
{
//Fail
}
}
......
我正在接收的数据包的单个负载中发送了多个数据包。如果我向 lzo1z_decompress 发送了错误的字节,我就会遇到分段错误。错误如下所示:
Program received signal SIGSEGV, Segmentation fault.
0x000000059a581339 in lzo1z_decompress ()
#1 0x000000059a5810f8 in decompressLZO1z (self=<optimized out>, args=<optimized out>)
现在,如果我发送未压缩的缓冲区,程序本身就会崩溃。在将数据发送到解压缩之前,有什么方法可以验证我收到的数据是否已压缩?
改用lzo1x_decompress_safe()
。 lzo1x_decompress()
如果给定无效数据,可能会崩溃,例如不是 LZO-compressed 数据。看起来这正是正在发生的事情。
我正在使用 lzo1z 解压缩来解压缩通过网络发送的数据。现在我需要在解压缩数据之前检查数据是否被压缩。我的代码是这样的:
#include <lzo1z.h>
......
if (lzo_init() != LZO_E_OK)
{
//Error
}
else{
// ** Validation if compressed with lzo1z **
lzoFlag = lzo1z_decompress(buffPointer,ret_in,out,&out_len,wrkmem);
if (lzoFlag == LZO_E_OK)
{
// Success
}
else
{
//Fail
}
}
......
我正在接收的数据包的单个负载中发送了多个数据包。如果我向 lzo1z_decompress 发送了错误的字节,我就会遇到分段错误。错误如下所示:
Program received signal SIGSEGV, Segmentation fault.
0x000000059a581339 in lzo1z_decompress ()
#1 0x000000059a5810f8 in decompressLZO1z (self=<optimized out>, args=<optimized out>)
现在,如果我发送未压缩的缓冲区,程序本身就会崩溃。在将数据发送到解压缩之前,有什么方法可以验证我收到的数据是否已压缩?
改用lzo1x_decompress_safe()
。 lzo1x_decompress()
如果给定无效数据,可能会崩溃,例如不是 LZO-compressed 数据。看起来这正是正在发生的事情。