@@ -267,11 +267,15 @@ static int qmi_encode_string_elem(const struct qmi_elem_info *ei_array,
267267 }
268268 rc = qmi_encode_basic_elem (buf_dst , & string_len ,
269269 1 , string_len_sz );
270+ if (rc < 0 )
271+ return rc ;
270272 encoded_bytes += rc ;
271273 }
272274
273275 rc = qmi_encode_basic_elem (buf_dst + encoded_bytes , buf_src ,
274276 string_len , temp_ei -> elem_size );
277+ if (rc < 0 )
278+ return rc ;
275279 encoded_bytes += rc ;
276280
277281 return encoded_bytes ;
@@ -333,6 +337,8 @@ static int qmi_encode(const struct qmi_elem_info *ei_array, void *out_buf,
333337 case QMI_OPT_FLAG :
334338 rc = qmi_encode_basic_elem (& opt_flag_value , buf_src ,
335339 1 , sizeof (u8 ));
340+ if (rc < 0 )
341+ return rc ;
336342 if (opt_flag_value )
337343 temp_ei = temp_ei + 1 ;
338344 else
@@ -354,11 +360,15 @@ static int qmi_encode(const struct qmi_elem_info *ei_array, void *out_buf,
354360 data_len_value = (u32 )val8 ;
355361 rc = qmi_encode_basic_elem (buf_dst , & val8 ,
356362 1 , data_len_sz );
363+ if (rc < 0 )
364+ return rc ;
357365 } else {
358366 val16 = * (u16 * )buf_src ;
359367 data_len_value = (u32 )le16_to_cpu (val16 );
360368 rc = qmi_encode_basic_elem (buf_dst , & val16 ,
361369 1 , data_len_sz );
370+ if (rc < 0 )
371+ return rc ;
362372 }
363373 UPDATE_ENCODE_VARIABLES (temp_ei , buf_dst ,
364374 encoded_bytes , tlv_len ,
@@ -386,6 +396,8 @@ static int qmi_encode(const struct qmi_elem_info *ei_array, void *out_buf,
386396 rc = qmi_encode_basic_elem (buf_dst , buf_src ,
387397 data_len_value ,
388398 temp_ei -> elem_size );
399+ if (rc < 0 )
400+ return rc ;
389401 UPDATE_ENCODE_VARIABLES (temp_ei , buf_dst ,
390402 encoded_bytes , tlv_len ,
391403 encode_tlv , rc );
@@ -544,10 +556,14 @@ static int qmi_decode_string_elem(const struct qmi_elem_info *ei_array,
544556 if (string_len_sz == sizeof (u8 )) {
545557 rc = qmi_decode_basic_elem (& val8 , buf_src ,
546558 1 , string_len_sz );
559+ if (rc < 0 )
560+ return rc ;
547561 string_len = (u32 )val8 ;
548562 } else {
549563 rc = qmi_decode_basic_elem (& val16 , buf_src ,
550564 1 , string_len_sz );
565+ if (rc < 0 )
566+ return rc ;
551567 string_len = (u32 )val16 ;
552568 }
553569 decoded_bytes += rc ;
@@ -565,6 +581,8 @@ static int qmi_decode_string_elem(const struct qmi_elem_info *ei_array,
565581
566582 rc = qmi_decode_basic_elem (buf_dst , buf_src + decoded_bytes ,
567583 string_len , temp_ei -> elem_size );
584+ if (rc < 0 )
585+ return rc ;
568586 * ((char * )buf_dst + string_len ) = '\0' ;
569587 decoded_bytes += rc ;
570588
@@ -667,10 +685,14 @@ static int qmi_decode(const struct qmi_elem_info *ei_array, void *out_c_struct,
667685 if (data_len_sz == sizeof (u8 )) {
668686 rc = qmi_decode_basic_elem (& val8 , buf_src ,
669687 1 , data_len_sz );
688+ if (rc < 0 )
689+ return rc ;
670690 data_len_value = (u32 )val8 ;
671691 } else {
672692 rc = qmi_decode_basic_elem (& val16 , buf_src ,
673693 1 , data_len_sz );
694+ if (rc < 0 )
695+ return rc ;
674696 data_len_value = (u32 )val16 ;
675697 }
676698 val32 = cpu_to_le32 (data_len_value );
@@ -701,6 +723,8 @@ static int qmi_decode(const struct qmi_elem_info *ei_array, void *out_c_struct,
701723 rc = qmi_decode_basic_elem (buf_dst , buf_src ,
702724 data_len_value ,
703725 temp_ei -> elem_size );
726+ if (rc < 0 )
727+ return rc ;
704728 UPDATE_DECODE_VARIABLES (buf_src , decoded_bytes , rc );
705729 break ;
706730
0 commit comments