<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Recent changes to bugs</title><link>https://sourceforge.net/p/mjson/bugs/</link><description>Recent changes to bugs</description><atom:link href="https://sourceforge.net/p/mjson/bugs/feed.rss" rel="self"/><language>en</language><lastBuildDate>Tue, 11 Sep 2018 00:59:38 -0000</lastBuildDate><atom:link href="https://sourceforge.net/p/mjson/bugs/feed.rss" rel="self" type="application/rss+xml"/><item><title>NULL pointer dereference in mjson 1.7</title><link>https://sourceforge.net/p/mjson/bugs/6/</link><description>&lt;div class="markdown_content"&gt;&lt;p&gt;Dear Ruimaciel, &lt;br/&gt;
We have found a NULL pointer dereference issue in mjson.&lt;br/&gt;
The crash input is automatically generated by our test generation tool FOCAL. &lt;br/&gt;
You can find jsonparser.c in the attachment.&lt;/p&gt;
&lt;p&gt;Here are details to reproduce the buffer overflow.&lt;br/&gt;
- OS &amp;amp; Compiler&lt;br/&gt;
Ubuntu Linux 16.04 x64 and GCC 5.4.0&lt;br/&gt;
- Build command&lt;br/&gt;
&lt;code&gt;$ CFLAGS="-fsanitize=address" ./configure &amp;amp;&amp;amp; make clean all&lt;/code&gt;&lt;br/&gt;
&lt;code&gt;$ gcc -fsanitize=address -o jsonparser2 jsonparser.c -Isrc src/.libs/libmjson.a&lt;/code&gt;&lt;br/&gt;
- Run command &lt;br/&gt;
&lt;code&gt;$ echo "abc"|./jsonparser&lt;/code&gt;&lt;br/&gt;
- Outputs&lt;br/&gt;
 ```&lt;br/&gt;
 Some error occurred: 4&lt;br/&gt;
ASAN:SIGSEGV&lt;br/&gt;
=================================================================&lt;br/&gt;
==28253==ERROR: AddressSanitizer: SEGV on unknown address 0x000000000000 (pc 0x000000411ded bp 0x7ffc323e2940 sp 0x7ffc323e2910 T0)&lt;br/&gt;
    #0 0x411dec  (/home/yhkim/json-1.7.0/jsonparser+0x411dec)&lt;br/&gt;
    #1 0x411f74  (/home/yhkim/json-1.7.0/jsonparser+0x411f74)&lt;br/&gt;
    #2 0x401294  (/home/yhkim/json-1.7.0/jsonparser+0x401294)&lt;br/&gt;
    #3 0x7f97ef4a282f  (/lib/x86_64-linux-gnu/libc.so.6+0x2082f)&lt;br/&gt;
    #4 0x401008  (/home/yhkim/json-1.7.0/jsonparser+0x401008)&lt;/p&gt;
&lt;p&gt;AddressSanitizer can not provide additional info.&lt;br/&gt;
SUMMARY: AddressSanitizer: SEGV ??:0 ??&lt;br/&gt;
==28253==ABORTING&lt;br/&gt;
Aborted&lt;br/&gt;
```&lt;/p&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Yunho Kim</dc:creator><pubDate>Tue, 11 Sep 2018 00:59:38 -0000</pubDate><guid>https://sourceforge.netab8cc3419c7e374dd8cfa65a5d42a3074ca52b79</guid></item><item><title>Strict-aliasing rules violations</title><link>https://sourceforge.net/p/mjson/bugs/5/</link><description>&lt;div class="markdown_content"&gt;&lt;p&gt;Compiling json.c and json.h 1.1 in GCC 4.2.4 causes a certain number of warnings related to type casts into (rcstring**).&lt;br /&gt;
While not a bug strictly-speaking, these rule violations might prevent your code from being properly optimized on certain platforms (see &lt;a href="http://xania.org/200712/cpp-strict-aliasing\"&gt;http://xania.org/200712/cpp-strict-aliasing\&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;These warnings can be fixed by moving the rcstring declarations into json.h and by properly using rcstring* instead of void* in the json_parsing_info and json_saxy_parser_status structures.&lt;br /&gt;
This also allows the removal of every cast into rcstring* and rcstring** in the code.&lt;/p&gt;
&lt;p&gt;I have patched json.c and json.h version 1.1 for use in my flvmeta project, the changed can be seen here : &lt;a href="http://code.google.com/p/flvmeta/source/detail?r=131"&gt;http://code.google.com/p/flvmeta/source/detail?r=131&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Marc Noirot</dc:creator><pubDate>Thu, 08 Oct 2009 10:22:07 -0000</pubDate><guid>https://sourceforge.net549826a01c91b216a045b57b1c0089eb869f04f3</guid></item><item><title>Some Unicode cause Parse Error</title><link>https://sourceforge.net/p/mjson/bugs/4/</link><description>&lt;div class="markdown_content"&gt;&lt;p&gt;1151        case 3: /*inside a JSON string: escape unicode */&lt;br /&gt;
1152            {&lt;br /&gt;
1153                assert (*text != NULL);&lt;br /&gt;
1154                if ((**p &amp;gt;= 'a') &amp;amp;&amp;amp; (**p &amp;lt;= 'e'))&lt;br /&gt;
1155                {&lt;br /&gt;
1156                    if (rcs_catc (*text, **p) != RS_OK)&lt;br /&gt;
1157                        return LEX_MEMORY;&lt;br /&gt;
1158                    *state = 4;    /* inside a JSON string: escape unicode */&lt;br /&gt;
1159                }&lt;br /&gt;
1160                else if ((**p &amp;gt;= 'A') &amp;amp;&amp;amp; (**p &amp;lt;= 'E'))&lt;br /&gt;
1161                {&lt;br /&gt;
1162                    if (rcs_catc (*text, **p) != RS_OK)&lt;br /&gt;
1163                        return LEX_MEMORY;&lt;br /&gt;
1164                    *state = 4;    /* inside a JSON string: escape unicode */&lt;br /&gt;
1165                }&lt;/p&gt;
&lt;p&gt;I am not sure why here **p is  compared to 'e' and 'E' but not 'f' and 'F'.  My json document contains a unicode 'ò'   \u00F2, the parser will return error.&lt;/p&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">jerry_king_iq</dc:creator><pubDate>Tue, 24 Mar 2009 19:24:57 -0000</pubDate><guid>https://sourceforge.net29dbc1eeeb7837f52f84b4b8b4368cd372c2a241</guid></item><item><title>incomplete lexing of numbers beginning with '0'</title><link>https://sourceforge.net/p/mjson/bugs/3/</link><description>&lt;div class="markdown_content"&gt;&lt;p&gt;I noticed that numbers beginning with '0.' and '0e' are not recognized by the lexer.&lt;/p&gt;
&lt;p&gt;These changes to json.c (rev. 118) seem to fix the problem:&lt;/p&gt;
&lt;p&gt;1271a1272&lt;br /&gt;
&amp;gt;                                       ++*p;&lt;br /&gt;
1274a1276,1283&lt;br /&gt;
&amp;gt;                               case 'e':&lt;br /&gt;
&amp;gt;                               case 'E':&lt;br /&gt;
&amp;gt;                                       if (rcs_catc (*text, **p) != RS_OK)&lt;br /&gt;
&amp;gt;                                               return LEX_MEMORY;&lt;br /&gt;
&amp;gt;                                       ++*p;&lt;br /&gt;
&amp;gt;                                       *state = 22;    /* number: exp start */&lt;br /&gt;
&amp;gt;                                       break;&lt;br /&gt;
&amp;gt; &lt;/p&gt;
&lt;p&gt;I hope that helps, and thanks for this useful library.&lt;/p&gt;
&lt;p&gt;Markus Eisenbach&lt;/p&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Markus Eisenbach</dc:creator><pubDate>Mon, 05 May 2008 13:48:17 -0000</pubDate><guid>https://sourceforge.netbbe036bf7f2bba1b6ecbc0da1a4557261135f79d</guid></item><item><title>bug in json_free_value</title><link>https://sourceforge.net/p/mjson/bugs/2/</link><description>&lt;div class="markdown_content"&gt;&lt;p&gt;IMHO the following extract of json_free_value is wrong.&lt;/p&gt;
&lt;p&gt;&amp;gt;  // fixing sibling linked list connections&lt;br /&gt;
&amp;gt;  if ((*value)-&amp;gt;previous &amp;amp;&amp;amp; (*value)-&amp;gt;next)&lt;br /&gt;
&amp;gt;  {&lt;br /&gt;
&amp;gt;    (*value)-&amp;gt;previous-&amp;gt;next = (*value)-&amp;gt;next;&lt;br /&gt;
&amp;gt;    (*value)-&amp;gt;next-&amp;gt;previous = (*value)-&amp;gt;previous;&lt;br /&gt;
&amp;gt;  }&lt;br /&gt;
&amp;gt;  if ((*value)-&amp;gt;previous)&lt;br /&gt;
&amp;gt;  {&lt;br /&gt;
&amp;gt;    (*value)-&amp;gt;previous-&amp;gt;next = NULL;&lt;br /&gt;
&amp;gt;  }&lt;br /&gt;
&amp;gt;  if ((*value)-&amp;gt;next)&lt;br /&gt;
&amp;gt;  {&lt;br /&gt;
&amp;gt;    (*value)-&amp;gt;next-&amp;gt;previous = NULL;&lt;br /&gt;
&amp;gt;  }&lt;/p&gt;
&lt;p&gt;Maybe the intended behaviour is the following one.&lt;/p&gt;
&lt;p&gt;&amp;gt;  // fixing sibling linked list connections&lt;br /&gt;
&amp;gt;  if ((*value)-&amp;gt;previous &amp;amp;&amp;amp; (*value)-&amp;gt;next)&lt;br /&gt;
&amp;gt;  {&lt;br /&gt;
&amp;gt;    (*value)-&amp;gt;previous-&amp;gt;next = (*value)-&amp;gt;next;&lt;br /&gt;
&amp;gt;    (*value)-&amp;gt;next-&amp;gt;previous = (*value)-&amp;gt;previous;&lt;br /&gt;
&amp;gt;  }&lt;br /&gt;
&amp;gt;  else&lt;br /&gt;
&amp;gt;  {&lt;br /&gt;
&amp;gt;    if ((*value)-&amp;gt;previous)&lt;br /&gt;
&amp;gt;    {&lt;br /&gt;
&amp;gt;      (*value)-&amp;gt;previous-&amp;gt;next = NULL;&lt;br /&gt;
&amp;gt;    }&lt;br /&gt;
&amp;gt;    if ((*value)-&amp;gt;next)&lt;br /&gt;
&amp;gt;    {&lt;br /&gt;
&amp;gt;      (*value)-&amp;gt;next-&amp;gt;previous = NULL;&lt;br /&gt;
&amp;gt;    }&lt;br /&gt;
&amp;gt;  }&lt;/p&gt;
&lt;p&gt;My mail: jose.bollo@tele2.fr&lt;/p&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Anonymous</dc:creator><pubDate>Wed, 26 Sep 2007 12:34:20 -0000</pubDate><guid>https://sourceforge.net998bbf3b4dc5152b68a1801d6359c825f4b5e894</guid></item><item><title>swprintf at json.c</title><link>https://sourceforge.net/p/mjson/bugs/1/</link><description>&lt;div class="markdown_content"&gt;&lt;p&gt;In file "json.c", function "json_escape_string" (or "json_escape_to_ascii" in last SVN version), I see the following line:&lt;br /&gt;
swprintf (temp, 7, L"\\u%.4x\t", text[i]);&lt;br /&gt;
which causes a compiler warning "passing arg 2 of `swprintf' makes pointer from integer without a cast".&lt;/p&gt;
&lt;p&gt;May be "snwpintf" was supposed to be here?&lt;/p&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Dan V. Stolyarov</dc:creator><pubDate>Fri, 29 Jun 2007 03:58:57 -0000</pubDate><guid>https://sourceforge.netcb8819e2a6f0098efb825d45a7518599a17355a7</guid></item></channel></rss>