Skip to content

Commit

Permalink
fix some static analyzer reports (Null pointer Dereferences)
Browse files Browse the repository at this point in the history
  • Loading branch information
jfdelnero committed Nov 20, 2023
1 parent 7e479ef commit 37db873
Showing 1 changed file with 20 additions and 10 deletions.
30 changes: 20 additions & 10 deletions src/mtp_properties.c
Original file line number Diff line number Diff line change
Expand Up @@ -675,6 +675,19 @@ int build_DevicePropValue_dataset(mtp_ctx * ctx,void * buffer, int maxsize,uint3
int objectproplist_element(mtp_ctx * ctx, void * buffer, int * ofs, int maxsize, uint16_t prop_code, uint32_t handle, void * data,uint32_t prop_code_param)
{
int i;
uint64_t tmp_data[2];
void * tmp_ptr;

if( !ofs )
return 0;

tmp_data[0] = 0;
tmp_data[1] = 0;

if( data )
tmp_ptr = data;
else
tmp_ptr = (void*)&tmp_data;

if( (prop_code != prop_code_param) && (prop_code_param != 0xFFFFFFFF) )
{
Expand All @@ -695,28 +708,25 @@ int objectproplist_element(mtp_ctx * ctx, void * buffer, int * ofs, int maxsize,
switch(properties[i].data_type)
{
case MTP_TYPE_STR:
if(data)
*ofs = poke_string(buffer, *ofs, maxsize, (char*)data);
else
*ofs = poke08(buffer, *ofs, maxsize, 0);
*ofs = poke_string(buffer, *ofs, maxsize, (char*)tmp_ptr);
break;
case MTP_TYPE_UINT8:
*ofs = poke08(buffer, *ofs, maxsize, *((uint8_t*)data));
*ofs = poke08(buffer, *ofs, maxsize, *((uint8_t*)tmp_ptr));
break;
case MTP_TYPE_UINT16:
*ofs = poke16(buffer, *ofs, maxsize, *((uint16_t*)data));
*ofs = poke16(buffer, *ofs, maxsize, *((uint16_t*)tmp_ptr));
break;
case MTP_TYPE_UINT32:
*ofs = poke32(buffer, *ofs, maxsize, *((uint32_t*)data));
*ofs = poke32(buffer, *ofs, maxsize, *((uint32_t*)tmp_ptr));
break;
case MTP_TYPE_UINT64:
*ofs = poke32(buffer, *ofs, maxsize, *((uint64_t*)data) & 0xFFFFFFFF);
*ofs = poke32(buffer, *ofs, maxsize, *((uint64_t*)data) >> 32);
*ofs = poke32(buffer, *ofs, maxsize, *((uint64_t*)tmp_ptr) & 0xFFFFFFFF);
*ofs = poke32(buffer, *ofs, maxsize, *((uint64_t*)tmp_ptr) >> 32);
break;
case MTP_TYPE_UINT128:
for(i=0;i<4;i++)
{
*ofs = poke32(buffer, *ofs, maxsize, *((uint32_t*)data)+i);
*ofs = poke32(buffer, *ofs, maxsize, *((uint32_t*)tmp_ptr)+i);
}
break;
default:
Expand Down

0 comments on commit 37db873

Please sign in to comment.