Am 03.09.2012 18:53, schrieb Stefan Weil:
Am 03.09.2012 18:41, schrieb Luiz Capitulino:
On Sat,  1 Sep 2012 12:52:58 +0200
Stefan Weil <s...@weilnetz.de> wrote:

Report from smatch:
json-parser.c:474 parse_object(62) error: potential null derefence 'dict'. json-parser.c:553 parse_array(75) error: potential null derefence 'list'.

Label out can be called with list == NULL.

Signed-off-by: Stefan Weil <s...@weilnetz.de>
---
  json-parser.c |    8 ++++++--
  1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/json-parser.c b/json-parser.c
index 457291b..c31c759 100644
--- a/json-parser.c
+++ b/json-parser.c
@@ -471,7 +471,9 @@ static QObject *parse_object(JSONParserContext *ctxt, va_list *ap)
    out:
      parser_context_restore(ctxt, saved_ctxt);
-    QDECREF(dict);
+    if (dict) {
+        QDECREF(dict);
+    }

I prefer changing QDECREF() to a nop if obj is NULL.

That's fine for me, too. If everybody agrees, I'll send two new
patches: one to change QDECREF, one to remove the if statements
from other code locations which use the same pattern as
my original patch.

Cheers,

- sw



What about modifying QOBJECT to return NULL if called with a NULL pointer?
That would be a more generic fix for the same problem.

In either case, the code will be a little larger and slower,
but that should not matter because it is not time critical.

Regards,

Stefan W.


Reply via email to