<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Recent changes to support-requests</title><link>https://sourceforge.net/p/l4ka/support-requests/</link><description>Recent changes to support-requests</description><atom:link href="https://sourceforge.net/p/l4ka/support-requests/feed.rss" rel="self"/><language>en</language><lastBuildDate>Mon, 12 Nov 2001 11:35:27 -0000</lastBuildDate><atom:link href="https://sourceforge.net/p/l4ka/support-requests/feed.rss" rel="self" type="application/rss+xml"/><item><title>RMGR incorrectly checks regions</title><link>https://sourceforge.net/p/l4ka/support-requests/2/</link><description>&lt;div class="markdown_content"&gt;&lt;p&gt;I think I've found a bug in the rmgr code that loads&lt;br /&gt;
the executable code&lt;br /&gt;
of the kernel and modules. In the file&lt;br /&gt;
rmgr/src/startup.c, the function&lt;br /&gt;
startup() calls exec_load() to do the work. The&lt;br /&gt;
functions&lt;br /&gt;
mod_exec_read() and mod_exec_read_exec() are given to&lt;br /&gt;
exec_load() to do&lt;br /&gt;
the reading. These two functions make use of the&lt;br /&gt;
overlaps_myself()&lt;br /&gt;
function to do some checks on where the buffers are.&lt;/p&gt;
&lt;p&gt;static int&lt;br /&gt;
overlaps_myself(vm_offset_t begin, vm_offset_t end)&lt;br /&gt;
{&lt;br /&gt;
return (begin &amp;amp;lt;= (vm_offset_t) &amp;amp;amp;__crt_dummy__ &lt;br /&gt;
&amp;amp;amp;&amp;amp;amp; end &amp;amp;gt;= (vm_offset_t) &amp;amp;amp;__crt_dummy__)&lt;br /&gt;
|| (begin &amp;amp;lt;= (vm_offset_t) &amp;amp;amp;_end&lt;br /&gt;
&amp;amp;amp;&amp;amp;amp; end &amp;amp;gt;= (vm_offset_t) &amp;amp;amp;_end)&lt;br /&gt;
|| (begin &amp;amp;lt;= mod_range_start&lt;br /&gt;
&amp;amp;amp;&amp;amp;amp; end &amp;amp;gt;= mod_range_start)&lt;br /&gt;
|| (begin &amp;amp;lt;= mod_range_end&lt;br /&gt;
&amp;amp;amp;&amp;amp;amp; end &amp;amp;gt;= mod_range_end);&lt;br /&gt;
}&lt;/p&gt;
&lt;p&gt;This function appears to be checking if the range&lt;br /&gt;
[begin, end] overlaps&lt;br /&gt;
the code sections of the process it is running in or&lt;br /&gt;
the code of any of&lt;br /&gt;
the modules. There seems to be a bug though. This code&lt;br /&gt;
doesn't catch the&lt;br /&gt;
case where [begin,end] is strictly inside the the&lt;br /&gt;
process or strictly&lt;br /&gt;
inside the module region.&lt;/p&gt;
&lt;p&gt;Additionally, looking at the code for Fiasco, different&lt;br /&gt;
semantics exist&lt;br /&gt;
altogether. mod_exec_read checks that the region is&lt;br /&gt;
completely inside&lt;br /&gt;
the executable to be sure that copies are going into&lt;br /&gt;
the data region of&lt;br /&gt;
the process. mod_exec_read_exec() checks that it isn't&lt;br /&gt;
inside the region&lt;br /&gt;
of the process or the modules, to make sure it doesn't&lt;br /&gt;
overwrite things&lt;br /&gt;
yet to be loaded.&lt;/p&gt;&lt;/div&gt;</description><pubDate>Mon, 12 Nov 2001 11:35:27 -0000</pubDate><guid>https://sourceforge.net9a40e034dcaad216ba78fd1eeffa8f128dfcca7b</guid></item><item><title>L4KA Internals</title><link>https://sourceforge.net/p/l4ka/support-requests/1/</link><description/><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Anonymous</dc:creator><pubDate>Fri, 03 Nov 2000 02:33:42 -0000</pubDate><guid>https://sourceforge.netbd0420c197a37a27b6fd24f04ed7f1604f85eb6d</guid></item></channel></rss>