<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>C on iMil.net</title>
    <link>http://imil.net/blog/tags/c/</link>
    <description>Recent content in C on iMil.net</description>
    <generator>Hugo</generator>
    <language>en-us</language>
    <lastBuildDate>Tue, 19 May 2009 21:58:46 +0000</lastBuildDate>
    <atom:link href="http://imil.net/blog/tags/c/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>snprintf(surprise, BUFSIZ, &amp;quot;prout%s&amp;quot;, surprise);</title>
      <link>http://imil.net/blog/posts/2009/snprintfsurprise-bufsiz-prouts-surprise/</link>
      <pubDate>Tue, 19 May 2009 21:58:46 +0000</pubDate>
      <guid>http://imil.net/blog/posts/2009/snprintfsurprise-bufsiz-prouts-surprise/</guid>
      <description>&lt;p&gt;Cet après midi, j&amp;rsquo;ai eu une mauvaise surprise. Je fus en effet étonné de constater qu&amp;rsquo;en compilant &lt;a href=&#34;http://imil.net/pkgin&#34;&gt;pkgin&lt;/a&gt; sous GNU/Linux, les appels du type :&lt;/p&gt;&#xA;&lt;!-- raw HTML omitted --&gt;&#xA;&lt;!-- raw HTML omitted --&gt;&#xA;&lt;p&gt;tronquaient &lt;code&gt;a&lt;/code&gt; avec uniquement &lt;code&gt;unechaine&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;p&gt;Evidemment, mon premier reflexe fut de blâmer GNU/Linux puisque ce code passait sans aucun soucis sur NetBSD, DragonFly BSD et même Solaris. Et pourtant. C&amp;rsquo;est &lt;em&gt;gl&lt;/em&gt; qui m&amp;rsquo;informa que &lt;a href=&#34;http://www.open-std.org/JTC1/SC22/wg14/www/docs/n1124.pdf&#34;&gt;ce document issu de l&amp;rsquo;ISO et l&amp;rsquo;IEC&lt;/a&gt; explique clairement que le fait d&amp;rsquo;appeler &lt;code&gt;snprintf()&lt;/code&gt; de la sorte rendait le résultat &amp;ldquo;imprévisible&amp;rdquo;. Dont acte.&lt;/p&gt;</description>
    </item>
    <item>
      <title>La magie de l&#39;ELF</title>
      <link>http://imil.net/blog/posts/2008/la-magie-de-lelf/</link>
      <pubDate>Wed, 10 Dec 2008 16:01:00 +0000</pubDate>
      <guid>http://imil.net/blog/posts/2008/la-magie-de-lelf/</guid>
      <description>&lt;p&gt;En comparant &lt;a href=&#34;http://beastiebox.sourceforge.net/&#34;&gt;le projet qui m&amp;rsquo;obsède jour et nuit&lt;/a&gt; et les outils similaires déjà existants (&lt;code&gt;crunchgen(1), rescue&lt;/code&gt;), j&amp;rsquo;en suis venu à me poser des questions sur le cas d&amp;rsquo;un mode &amp;ldquo;full static&amp;rdquo;. Pour mémoire, BeastieBox &amp;ldquo;trouve&amp;rdquo; la fonction à appeler fonction de &lt;code&gt;argv[0]&lt;/code&gt;, et je pars du principe que chaque nom de fonction doit être construit dynamiquement. Ce &lt;a href=&#34;http://mollacademy.gcu.info/doku.php?id=c:dlopen_self&#34;&gt;tour de passe-passe&lt;/a&gt; est facilement geré par les fonctions &lt;code&gt;dlopen(3) / dlsym(3)&lt;/code&gt; dans le cas d&amp;rsquo;un binaire compilé dynamiquement, mais quid d&amp;rsquo;un binaire &lt;code&gt;beastiebox&lt;/code&gt; compilé à l&amp;rsquo;aide du swtich &lt;code&gt;-static&lt;/code&gt; ? Point de &lt;code&gt;ld.so_elf&lt;/code&gt; à la rescousse ici, la seule solution qui m&amp;rsquo;est apparue&amp;hellip; c&amp;rsquo;est d&amp;rsquo;attaquer le binaire comme le fait précisemment &lt;code&gt;ld.so_elf&lt;/code&gt;, en &lt;code&gt;mmap&lt;/code&gt;&amp;lsquo;ant le binaire et en l&amp;rsquo;adressant via les structures ELF.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Marty, ressors la Delorean (update)</title>
      <link>http://imil.net/blog/posts/2008/marty-ressors-la-delorean-update/</link>
      <pubDate>Sat, 29 Nov 2008 12:44:16 +0000</pubDate>
      <guid>http://imil.net/blog/posts/2008/marty-ressors-la-delorean-update/</guid>
      <description>&lt;p&gt;Y&amp;rsquo;a quelques jours, je me suis lancé dans un nouveau projet. Plus pour le fun que par réelle nécéssité, je me suis mis en tête d&amp;rsquo;ecrire un &lt;a href=&#34;http://www.busybox.net/&#34;&gt;BusyBox&lt;/a&gt;-like orienté BSD. J&amp;rsquo;en suis pour le moment aux balbutiements du projet, mais quelques commandes sont déjà fonctionnelles.&lt;/p&gt;&#xA;&lt;p&gt;Mon approche est un tantinet differente du fonctionnement de BusyBox. Afin de permettre l&amp;rsquo;écriture simple et rapide de plugins, je supporte deux modes, un mode statique (ala BB), et un mode dynamique grace aux interfaces DLFCN(3).&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
