Ticket #774: NULL-ptr-2011-02-14.diffs

File NULL-ptr-2011-02-14.diffs, 3.2 KB (added by jwernerny -2-, 9 years ago)

Patch for NULL Ptr when opening config

Line 
1Index: navit/xmlconfig.c
2===================================================================
3--- navit/xmlconfig.c   (revision 4155)
4+++ navit/xmlconfig.c   (working copy)
5@@ -1,6 +1,6 @@
6 /**
7  * Navit, a modular navigation system.
8- * Copyright (C) 2005-2009 Navit Team
9+ * Copyright (C) 2005-2009, 2011 Navit Team
10  *
11  * This program is free software; you can redistribute it and/or
12  * modify it under the terms of the GNU General Public License
13@@ -717,15 +717,22 @@
14                we_files=file_wordexp_get_array(we);
15                count=file_wordexp_get_count(we);
16                dbg(1,"%d results\n", count);
17-               if (file_exists(we_files[0])) {
18-                       for (i = 0 ; i < count ; i++) {
19-                               dbg(1,"result[%d]='%s'\n", i, we_files[i]);
20-                               doc_new.href=we_files[i];
21-                               parse_file(&doc_new, error);
22+               if (NULL != we_files)                   /* NULL pointer check */
23+               {
24+                       if (file_exists(we_files[0])) {
25+                               for (i = 0 ; i < count ; i++) {
26+                                       dbg(1,"result[%d]='%s'\n", i, we_files[i]);
27+                                       doc_new.href=we_files[i];
28+                                       parse_file(&doc_new, error);
29+                               }
30+                       } else {
31+                               dbg(0,"Unable to include %s\n",we_files[0]);
32                        }
33-               } else {
34-                       dbg(0,"Unable to include %s\n",we_files[0]);
35                }
36+               else
37+               {
38+                       dbg(0, "Got NULL pointer when processing %s\n", href);
39+               }
40                file_wordexp_destroy(we);
41 
42        }
43Index: navit/map/textfile/textfile.c
44===================================================================
45--- navit/map/textfile/textfile.c       (revision 4155)
46+++ navit/map/textfile/textfile.c       (working copy)
47@@ -1,6 +1,6 @@
48 /**
49  * Navit, a modular navigation system.
50- * Copyright (C) 2005-2008 Navit Team
51+ * Copyright (C) 2005-2008, 2011 Navit Team
52  *
53  * This program is free software; you can redistribute it and/or
54  * modify it under the terms of the GNU General Public License
55@@ -35,6 +35,8 @@
56 
57 #include "textfile.h"
58 
59+const char UNKNOWN_FILENAME[] = "<UNKNOWN_FILENAME>"; /* used below */
60+
61 static int map_id;
62 
63 static void
64@@ -361,7 +363,10 @@
65 
66        m=g_new0(struct map_priv, 1);
67        m->id=++map_id;
68-       m->filename=g_strdup(wexp_data[0]);
69+       if (NULL != wexp_data)                          /* make sure not NULL pointer */
70+               m->filename=g_strdup(wexp_data[0]);
71+       else
72+               m->filename=g_strdup(UNKNOWN_FILENAME);
73        m->is_pipe=is_pipe;
74        if (flags)
75                m->flags=flags->u.num;
76Index: navit/map/binfile/binfile.c
77===================================================================
78--- navit/map/binfile/binfile.c (revision 4155)
79+++ navit/map/binfile/binfile.c (working copy)
80@@ -1,6 +1,6 @@
81 /**
82  * Navit, a modular navigation system.
83- * Copyright (C) 2005-2008 Navit Team
84+ * Copyright (C) 2005-2008, 2011 Navit Team
85  *
86  * This program is free software; you can redistribute it and/or
87  * modify it under the terms of the GNU General Public License
88@@ -39,6 +39,8 @@
89 #include "callback.h"
90 #include "types.h"
91 
92+static const char UNKNOWN_FILENAME[] = "<UNKNOWN_FILENAME>";
93+
94 static int map_id;
95 
96 struct tile {
97@@ -2416,7 +2418,10 @@
98        m=g_new0(struct map_priv, 1);
99        m->cbl=cbl;
100        m->id=++map_id;
101-       m->filename=g_strdup(wexp_data[0]);
102+       if (NULL != wexp_data)                          /* NULL pointer check */
103+               m->filename=g_strdup(wexp_data[0]);
104+       else
105+               m->filename = g_strdup(UNKNOWN_FILENAME);
106        file_wordexp_destroy(wexp);
107        check_version=attr_search(attrs, NULL, attr_check_version);
108        if (check_version)