https://redmine.openinfosecfoundation.org/https://redmine.openinfosecfoundation.org/favicon.ico?17011170022020-05-12T09:14:11ZOpen Information Security FoundationSuricata - Optimization #3658: Use WARN_UNUSED for ByteExtract* functionshttps://redmine.openinfosecfoundation.org/issues/3658?journal_id=163772020-05-12T09:14:11ZVictor Julienvictor@inliniac.net
<ul><li><strong>Status</strong> changed from <i>New</i> to <i>Assigned</i></li><li><strong>Assignee</strong> set to <i>Shivani Bhardwaj</i></li><li><strong>Target version</strong> changed from <i>TBD</i> to <i>6.0.0beta1</i></li></ul> Suricata - Optimization #3658: Use WARN_UNUSED for ByteExtract* functionshttps://redmine.openinfosecfoundation.org/issues/3658?journal_id=165892020-06-08T08:26:42ZVictor Julienvictor@inliniac.net
<ul><li><strong>Target version</strong> changed from <i>6.0.0beta1</i> to <i>7.0.0-beta1</i></li></ul> Suricata - Optimization #3658: Use WARN_UNUSED for ByteExtract* functionshttps://redmine.openinfosecfoundation.org/issues/3658?journal_id=180122020-10-13T05:23:16ZShivani Bhardwaj
<ul><li><strong>Label</strong> <i>Beginner, C, Outreachy</i> added</li></ul> Suricata - Optimization #3658: Use WARN_UNUSED for ByteExtract* functionshttps://redmine.openinfosecfoundation.org/issues/3658?journal_id=180132020-10-13T05:23:27ZShivani Bhardwaj
<ul><li><strong>Assignee</strong> changed from <i>Shivani Bhardwaj</i> to <i>Community Ticket</i></li></ul> Suricata - Optimization #3658: Use WARN_UNUSED for ByteExtract* functionshttps://redmine.openinfosecfoundation.org/issues/3658?journal_id=180422020-10-16T07:21:46ZJanani Ramjee
<ul><li><strong>Assignee</strong> changed from <i>Community Ticket</i> to <i>Janani Ramjee</i></li></ul> Suricata - Optimization #3658: Use WARN_UNUSED for ByteExtract* functionshttps://redmine.openinfosecfoundation.org/issues/3658?journal_id=206532021-09-15T07:15:29ZVictor Julienvictor@inliniac.net
<ul><li><strong>Status</strong> changed from <i>Assigned</i> to <i>New</i></li><li><strong>Assignee</strong> deleted (<del><i>Janani Ramjee</i></del>)</li><li><strong>Target version</strong> deleted (<del><i>7.0.0-beta1</i></del>)</li></ul> Suricata - Optimization #3658: Use WARN_UNUSED for ByteExtract* functionshttps://redmine.openinfosecfoundation.org/issues/3658?journal_id=247472022-10-13T03:11:25ZHaleema Khan
<ul></ul><p>I want to work on this issue.<br />As per my understanding, I need to add the WARN_UNUSED macro to all the ByteExtract* functions e.g<br /><pre><code class="c syntaxhl" data-language="c"> <span class="kt">int</span> <span class="nf">ByteExtractUint16</span><span class="p">(</span><span class="n">res</span><span class="p">,</span> <span class="n">BYTE_LITTLE_ENDIAN</span><span class="p">,</span> <span class="k">sizeof</span><span class="p">(</span><span class="kt">uint16_t</span><span class="p">),</span>
<span class="p">(</span><span class="k">const</span> <span class="kt">uint8_t</span> <span class="o">*</span><span class="p">)</span> <span class="p">(</span><span class="n">input</span> <span class="o">+</span> <span class="o">*</span><span class="n">offset</span><span class="p">));</span>
</code></pre><br /> would become:<br /><pre><code class="c syntaxhl" data-language="c"> <span class="kt">int</span> <span class="n">WARN_UNUSED</span> <span class="nf">ByteExtractUint16</span><span class="p">(</span><span class="n">res</span><span class="p">,</span> <span class="n">BYTE_LITTLE_ENDIAN</span><span class="p">,</span> <span class="k">sizeof</span><span class="p">(</span><span class="kt">uint16_t</span><span class="p">),</span>
<span class="p">(</span><span class="k">const</span> <span class="kt">uint8_t</span> <span class="o">*</span><span class="p">)</span> <span class="p">(</span><span class="n">input</span> <span class="o">+</span> <span class="o">*</span><span class="n">offset</span><span class="p">));</span>
</code></pre></p> Suricata - Optimization #3658: Use WARN_UNUSED for ByteExtract* functionshttps://redmine.openinfosecfoundation.org/issues/3658?journal_id=247482022-10-13T03:11:40ZHaleema Khan
<ul><li><strong>Assignee</strong> set to <i>Haleema Khan</i></li></ul> Suricata - Optimization #3658: Use WARN_UNUSED for ByteExtract* functionshttps://redmine.openinfosecfoundation.org/issues/3658?journal_id=247542022-10-13T11:35:07ZPhilippe Antoine
<ul></ul><p>Exactly, then the warnings need to be fixed</p> Suricata - Optimization #3658: Use WARN_UNUSED for ByteExtract* functionshttps://redmine.openinfosecfoundation.org/issues/3658?journal_id=247612022-10-13T16:44:03ZHaleema Khan
<ul></ul><p>Do I need to run unit tests to generate those warnings or the clippy tool?</p> Suricata - Optimization #3658: Use WARN_UNUSED for ByteExtract* functionshttps://redmine.openinfosecfoundation.org/issues/3658?journal_id=247622022-10-13T19:26:39ZPhilippe Antoine
<ul></ul><p>These warnings should come out of clang, not clippy...</p> Suricata - Optimization #3658: Use WARN_UNUSED for ByteExtract* functionshttps://redmine.openinfosecfoundation.org/issues/3658?journal_id=247712022-10-14T01:11:23ZHaleema Khan
<ul></ul><p>I added the macro and ran <code>clang filname.c</code>.</p>
<p>I am getting a bunch of warnings and errors. Were you referring to those and how can I go about fixing those. e.g Following is a portion of the log that I am getting:</p>
<pre><code class="c syntaxhl" data-language="c"><span class="n">In</span> <span class="n">file</span> <span class="n">included</span> <span class="n">from</span> <span class="n">src</span><span class="o">/</span><span class="n">util</span><span class="o">-</span><span class="n">byte</span><span class="p">.</span><span class="n">c</span><span class="o">:</span><span class="mi">26</span><span class="o">:</span>
<span class="n">src</span><span class="o">/</span><span class="n">suricata</span><span class="o">-</span><span class="n">common</span><span class="p">.</span><span class="n">h</span><span class="o">:</span><span class="mi">44</span><span class="o">:</span><span class="mi">2</span><span class="o">:</span> <span class="n">warning</span><span class="o">:</span> <span class="s">"L1 cache line size not detected during build. Assuming 64 bytes."</span> <span class="p">[</span><span class="o">-</span><span class="n">W</span><span class="err">#</span><span class="n">warnings</span><span class="p">]</span>
<span class="cp">#warning "L1 cache line size not detected during the build. Assuming 64 bytes."
</span> <span class="o">^</span>
<span class="n">In</span> <span class="n">file</span> <span class="n">included</span> <span class="n">from</span> <span class="n">src</span><span class="o">/</span><span class="n">util</span><span class="o">-</span><span class="n">byte</span><span class="p">.</span><span class="n">c</span><span class="o">:</span><span class="mi">26</span><span class="o">:</span>
<span class="n">In</span> <span class="n">file</span> <span class="n">included</span> <span class="n">from</span> <span class="n">src</span><span class="o">/</span><span class="n">suricata</span><span class="o">-</span><span class="n">common</span><span class="p">.</span><span class="n">h</span><span class="o">:</span><span class="mi">141</span><span class="o">:</span>
<span class="o">/</span><span class="n">usr</span><span class="o">/</span><span class="n">local</span><span class="o">/</span><span class="n">include</span><span class="o">/</span><span class="n">pcre2</span><span class="p">.</span><span class="n">h</span><span class="o">:</span><span class="mi">969</span><span class="o">:</span><span class="mi">2</span><span class="o">:</span> <span class="n">error</span><span class="o">:</span> <span class="n">PCRE2_CODE_UNIT_WIDTH</span> <span class="n">must</span> <span class="n">be</span> <span class="n">defined</span> <span class="n">before</span> <span class="n">including</span> <span class="n">pcre2</span><span class="p">.</span><span class="n">h</span><span class="p">.</span>
<span class="cp">#error PCRE2_CODE_UNIT_WIDTH must be defined before including pcre2.h.
</span> <span class="o">^</span>
<span class="o">/</span><span class="n">usr</span><span class="o">/</span><span class="n">local</span><span class="o">/</span><span class="n">include</span><span class="o">/</span><span class="n">pcre2</span><span class="p">.</span><span class="n">h</span><span class="o">:</span><span class="mi">970</span><span class="o">:</span><span class="mi">2</span><span class="o">:</span> <span class="n">error</span><span class="o">:</span> <span class="n">Use</span> <span class="mi">8</span><span class="p">,</span> <span class="mi">16</span><span class="p">,</span> <span class="n">or</span> <span class="mi">32</span><span class="p">;</span> <span class="n">or</span> <span class="mi">0</span> <span class="k">for</span> <span class="n">a</span> <span class="n">multi</span><span class="o">-</span><span class="n">width</span> <span class="n">application</span><span class="p">.</span>
<span class="cp">#error Use 8, 16, or 32; or 0 for a multi-width application.
</span></code></pre>
<p>EDIT: I don't think they are the warnings I am looking for. I am trying to use scan-build but due to some installation issue its not working for me.<br />To me, they don't seem to be connected to the changes I made.</p> Suricata - Optimization #3658: Use WARN_UNUSED for ByteExtract* functionshttps://redmine.openinfosecfoundation.org/issues/3658?journal_id=247772022-10-14T05:03:43ZHaleema Khan
<ul></ul><p>When I try to run the Clang check I get errors. One of these is related to <code>#include <pcre2.h> and #include <byteswap.h></code>.<br />These files are not found. I searched in my local repo and then Suricata's main repo to make sure I have not messed up the files but confirmed that they are not there. What should I do about this? Should I remove the include statements altogether?</p> Suricata - Optimization #3658: Use WARN_UNUSED for ByteExtract* functionshttps://redmine.openinfosecfoundation.org/issues/3658?journal_id=247782022-10-14T06:31:08ZPhilippe Antoine
<ul></ul><p>You should compile Suricata with ./configure then make<br /><code>make</code> will call <code>clang</code> with the right flags, including those for PCRE2</p> Suricata - Optimization #3658: Use WARN_UNUSED for ByteExtract* functionshttps://redmine.openinfosecfoundation.org/issues/3658?journal_id=247862022-10-15T05:33:17ZHaleema Khan
<ul><li><strong>File</strong> <a href="/attachments/2699">clipboard-202210151033-ggfpl.png</a> <a class="icon-only icon-download" title="Download" href="/attachments/download/2699/clipboard-202210151033-ggfpl.png">clipboard-202210151033-ggfpl.png</a> added</li></ul><p>I am currently working on fixing the WARN_UNUSED warning from this. <br />I am having a hard time understanding this function. The description says "Extract 16 bits and move up the offset".<br />the ByteExtract function return value is never used, hence the error. So I understand it is mainly extracting the bytes from the given string for "ENIPEtxtract" but then doing nothing.<br />What I don't understand is the intention of "ENIPExtractUint16" function. It is returning 1 so the output of ByteExtract is to be added to the offset? that seems to be the only way the result can be used . <br />Another way I can think of is adding an If{} block that returns 1 if "ByteExtract" returns an output.</p>
<p><img src="https://redmine.openinfosecfoundation.org/attachments/download/2699/clipboard-202210151033-ggfpl.png" alt="" loading="lazy" /></p> Suricata - Optimization #3658: Use WARN_UNUSED for ByteExtract* functionshttps://redmine.openinfosecfoundation.org/issues/3658?journal_id=247872022-10-15T05:47:21ZHaleema Khan
<ul><li><strong>File</strong> <a href="/attachments/2700">Screenshot 2022-10-15 at 10.45.48 AM.png</a> <a class="icon-only icon-download" title="Download" href="/attachments/download/2700/Screenshot%202022-10-15%20at%2010.45.48%20AM.png">Screenshot 2022-10-15 at 10.45.48 AM.png</a> added</li></ul> Suricata - Optimization #3658: Use WARN_UNUSED for ByteExtract* functionshttps://redmine.openinfosecfoundation.org/issues/3658?journal_id=247892022-10-15T05:49:10ZHaleema Khan
<ul><li><strong>Status</strong> changed from <i>New</i> to <i>In Progress</i></li></ul> Suricata - Optimization #3658: Use WARN_UNUSED for ByteExtract* functionshttps://redmine.openinfosecfoundation.org/issues/3658?journal_id=247932022-10-16T19:32:54ZPhilippe Antoine
<ul></ul><p>What about something like<br /><pre><code class="diff syntaxhl" data-language="diff"><span class="gh">diff --git a/src/app-layer-enip-common.c b/src/app-layer-enip-common.c
index 91f06e731..407f7cc05 100644
</span><span class="gd">--- a/src/app-layer-enip-common.c
</span><span class="gi">+++ b/src/app-layer-enip-common.c
</span><span class="p">@@ -70,8 +70,10 @@</span> static int ENIPExtractUint16(uint16_t *res, const uint8_t *input, uint16_t *offs
return 0;
}
- ByteExtractUint16(res, BYTE_LITTLE_ENDIAN, sizeof(uint16_t),
<span class="gd">- (const uint8_t *) (input + *offset));
</span><span class="gi">+ if (ByteExtractUint16(res, BYTE_LITTLE_ENDIAN, sizeof(uint16_t),
+ (const uint8_t *) (input + *offset)) < 0) {
+ return 0;
+ }
</span> *offset += sizeof(uint16_t);
return 1;
}
</code></pre></p> Suricata - Optimization #3658: Use WARN_UNUSED for ByteExtract* functionshttps://redmine.openinfosecfoundation.org/issues/3658?journal_id=248122022-10-19T04:36:26ZShivani Bhardwaj
<ul><li><strong>Target version</strong> set to <i>7.0.0-beta1</i></li></ul> Suricata - Optimization #3658: Use WARN_UNUSED for ByteExtract* functionshttps://redmine.openinfosecfoundation.org/issues/3658?journal_id=248592022-10-20T20:23:03ZHaleema Khan
<ul><li><strong>Status</strong> changed from <i>In Progress</i> to <i>In Review</i></li></ul><p>PR in review <a class="external" href="https://github.com/OISF/suricata/pull/8024">https://github.com/OISF/suricata/pull/8024</a></p> Suricata - Optimization #3658: Use WARN_UNUSED for ByteExtract* functionshttps://redmine.openinfosecfoundation.org/issues/3658?journal_id=251682022-10-25T19:18:41ZVictor Julienvictor@inliniac.net
<ul><li><strong>Status</strong> changed from <i>In Review</i> to <i>Closed</i></li></ul><p>Merged <a class="external" href="https://github.com/OISF/suricata/pull/8040">https://github.com/OISF/suricata/pull/8040</a>, thanks!</p>