fix need buffer length

This commit is contained in:
gb 2022-08-19 14:22:39 +08:00
parent f033dc0ed6
commit 2857814494
1 changed files with 9 additions and 9 deletions

View File

@ -2793,13 +2793,13 @@ int hg_scanner::device_io_control(unsigned long code, void* data, unsigned* len)
{
std::string fw = get_firmware_version();
if (*len < fw.size())
if (*len < fw.size() + 1)
{
*len = fw.size();
*len = fw.size() + 1;
return SCANNER_ERR_INSUFFICIENT_MEMORY;
}
if (data)
if (data && fw.length())
strcpy((char*)data, fw.c_str());
return SCANNER_ERR_OK;
@ -2807,12 +2807,12 @@ int hg_scanner::device_io_control(unsigned long code, void* data, unsigned* len)
else if(code == IO_CTRL_CODE_GET_SERIAL)
{
std::string ser = get_serial_num();
if (*len < ser.size())
if (*len < ser.size() + 1)
{
*len = ser.size();
*len = ser.size() + 1;
return SCANNER_ERR_INSUFFICIENT_MEMORY;
}
if(data)
if(data && ser.length())
strcpy((char*)data, ser.c_str());
return SCANNER_ERR_OK;
@ -2820,12 +2820,12 @@ int hg_scanner::device_io_control(unsigned long code, void* data, unsigned* len)
else if (code == IO_CTRL_CODE_GET_HARDWARE_VERSION)
{
std::string ip = get_ip();
if (*len < ip.size())
if (*len < ip.size() + 1)
{
*len = ip.size();
*len = ip.size() + 1;
return SCANNER_ERR_INSUFFICIENT_MEMORY;
}
if(data)
if(data && ip.length())
strcpy((char*)data, ip.c_str());
return SCANNER_ERR_OK;