<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>S32KのトピックRe: linstack bug after master sends multiframe (DS3.4, SDK RTM 4.0.3)</title>
    <link>https://community.nxp.com/t5/S32K/linstack-bug-after-master-sends-multiframe-DS3-4-SDK-RTM-4-0-3/m-p/1874411#M35767</link>
    <description>&lt;P&gt;Hi,&lt;/P&gt;
&lt;P&gt;asked SW team, but got not feedback yet.&lt;/P&gt;
&lt;P&gt;BR, Petr&lt;/P&gt;</description>
    <pubDate>Fri, 24 May 2024 08:11:26 GMT</pubDate>
    <dc:creator>PetrS</dc:creator>
    <dc:date>2024-05-24T08:11:26Z</dc:date>
    <item>
      <title>linstack bug after master sends multiframe (DS3.4, SDK RTM 4.0.3)</title>
      <link>https://community.nxp.com/t5/S32K/linstack-bug-after-master-sends-multiframe-DS3-4-SDK-RTM-4-0-3/m-p/1852420#M34541</link>
      <description>&lt;P&gt;Hi all, I am developing a lin application using&amp;nbsp;S32k118 micro-controller, s23DS 3.4 and SDK RTM 4.0.3.&lt;/P&gt;&lt;P&gt;I think I found a bug in linstack library, I don't know if this is the most suitable place for signaling it.&amp;nbsp;&lt;/P&gt;&lt;P&gt;I am experiencing a vector catch issue when I try to send a multiframe master request (e.g. UDS service $2E, total payload 11 bytes) and then I try to perform a send even a single frame command (e.g. UDS service $22, total payloads 3 bytes).&lt;/P&gt;&lt;P&gt;From debugging it seems that in the function&amp;nbsp;&lt;STRONG&gt;&lt;EM&gt;tl_receive_message()&amp;nbsp;&lt;/EM&gt;&lt;/STRONG&gt;(&lt;STRONG&gt;in lin_commontl_proto.c&amp;nbsp;&lt;/STRONG&gt;file), the assignation of the length within the &lt;EM&gt;switch(PCI_type)&lt;/EM&gt;, for how it is implemented, causes it the length variable &lt;EM&gt;tmp_length&lt;/EM&gt;&amp;nbsp;to wrap around in case of first a longer message (e.g. multiframe) and then a shorter one. In the end, this leads to an attempt to write the buffer at an index greater then buffer dimension, thus vector catch.&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;DIV&gt;&lt;P&gt;I implemented a fix that seems to resolve the issue, (snapshot below), can anyone tell me if this is a known issue? Is solved in a different SDK version for DS 3.4 (so RTM &amp;gt; 4.0.3)? Furhtermore, may the posted fix have potential problematic drawbacks?&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thank you in advance and BR&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;EM&gt;static void tl_receive_message(l_ifc_handle iii)&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;{&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;...&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;/* Single frame */&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;case PCI_SF:&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;&amp;nbsp; tmp_length = (l_u16)((l_u16)pdu[1] &amp;amp; 0x000FU);&amp;nbsp;&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;/* Swapped assignation of variables */&lt;/EM&gt;&lt;/P&gt;&lt;DIV&gt;&lt;EM&gt;//&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; i = *length;&lt;/EM&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;EM&gt;//&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; *length = tmp_length;&lt;/EM&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;DIV&gt;&lt;EM&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; *length = tmp_length;&lt;/EM&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;EM&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; i = *length;&lt;/EM&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;EM&gt;&amp;nbsp;&lt;/EM&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;EM&gt;/* Commented if branch */&lt;/EM&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;EM&gt;//&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if (i &amp;lt; tmp_length)&lt;/EM&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;EM&gt;//&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/EM&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;EM&gt;//&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;tmp_length = i;&lt;/EM&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;EM&gt;//&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/EM&gt;&lt;/DIV&gt;&lt;P&gt;&lt;EM&gt;&amp;nbsp;&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;I&gt;....&lt;/I&gt;&lt;/P&gt;&lt;DIV&gt;&lt;EM&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; /* Multi frame */&lt;/EM&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;EM&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; case PCI_FF:&lt;/EM&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;EM&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; /* First frame */&lt;/EM&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;EM&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;tmp_length = (l_u16)((((l_u16)pdu[1] &amp;amp; 0x000FU) &amp;lt;&amp;lt; &lt;LI-EMOJI id="lia_smiling-face-with-sunglasses" title=":smiling_face_with_sunglasses:"&gt;&lt;/LI-EMOJI&gt; + (l_u16)pdu[2]);&lt;/EM&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;EM&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;/* Swapped assignation of variables */&lt;/EM&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;EM&gt;//&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; i = *length;&lt;/EM&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;EM&gt;//&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; *length = tmp_length;&lt;/EM&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;DIV&gt;&lt;EM&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;*length = tmp_length;&lt;/EM&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;EM&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; i = *length;&lt;/EM&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;EM&gt;/* Commented if branch */&lt;/EM&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;EM&gt;//&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if (i &amp;lt; tmp_length)&lt;/EM&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;EM&gt;//&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/EM&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;EM&gt;//&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; tmp_length = i;&lt;/EM&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;EM&gt;//&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/EM&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;</description>
      <pubDate>Tue, 23 Apr 2024 10:26:40 GMT</pubDate>
      <guid>https://community.nxp.com/t5/S32K/linstack-bug-after-master-sends-multiframe-DS3-4-SDK-RTM-4-0-3/m-p/1852420#M34541</guid>
      <dc:creator>cf_st</dc:creator>
      <dc:date>2024-04-23T10:26:40Z</dc:date>
    </item>
    <item>
      <title>Re: linstack bug after master sends multiframe (DS3.4, SDK RTM 4.0.3)</title>
      <link>https://community.nxp.com/t5/S32K/linstack-bug-after-master-sends-multiframe-DS3-4-SDK-RTM-4-0-3/m-p/1874411#M35767</link>
      <description>&lt;P&gt;Hi,&lt;/P&gt;
&lt;P&gt;asked SW team, but got not feedback yet.&lt;/P&gt;
&lt;P&gt;BR, Petr&lt;/P&gt;</description>
      <pubDate>Fri, 24 May 2024 08:11:26 GMT</pubDate>
      <guid>https://community.nxp.com/t5/S32K/linstack-bug-after-master-sends-multiframe-DS3-4-SDK-RTM-4-0-3/m-p/1874411#M35767</guid>
      <dc:creator>PetrS</dc:creator>
      <dc:date>2024-05-24T08:11:26Z</dc:date>
    </item>
  </channel>
</rss>

