From 8b8f81c25d6cbe03e6690b091b12afdfaf26f3e4 Mon Sep 17 00:00:00 2001 From: Max Neunhoeffer Date: Sat, 2 May 2015 07:03:32 +0200 Subject: [PATCH] Fix a nullptr dereferencing bug. --- lib/Basics/Traverser.h | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/lib/Basics/Traverser.h b/lib/Basics/Traverser.h index e6e3244532..6aa18c1481 100644 --- a/lib/Basics/Traverser.h +++ b/lib/Basics/Traverser.h @@ -937,7 +937,8 @@ namespace triagens { // FORWARD Go path back from intermediate -> start. // Insert all vertices and edges at front of vector // Do NOT! insert the intermediate vertex - while (strcmp(s->_predecessor.key,"") != 0) { + while (s->_predecessor.key != nullptr && + strcmp(s->_predecessor.key,"") != 0) { r_edges.push_front(s->_edge); r_vertices.push_front(s->_predecessor); s = forward._pq.find(s->_predecessor); @@ -947,7 +948,8 @@ namespace triagens { // Insert all vertices and edges at back of vector // Also insert the intermediate vertex s = backward._pq.find(_intermediate); - while (strcmp(s->_predecessor.key, "") != 0) { + while (s->_predecessor.key != nullptr && + strcmp(s->_predecessor.key, "") != 0) { r_edges.push_back(s->_edge); r_vertices.push_back(s->_predecessor); s = backward._pq.find(s->_predecessor); @@ -1013,7 +1015,8 @@ namespace triagens { // FORWARD Go path back from intermediate -> start. // Insert all vertices and edges at front of vector // Do NOT! insert the intermediate vertex - while (strcmp(s->_predecessor.key, "") != 0) { + while (s->_predecessor.key != nullptr && + strcmp(s->_predecessor.key, "") != 0) { r_edges.push_front(s->_edge); r_vertices.push_front(s->_predecessor); s = forward._pq.find(s->_predecessor); @@ -1023,7 +1026,8 @@ namespace triagens { // Insert all vertices and edges at back of vector // Also insert the intermediate vertex s = backward._pq.find(_intermediate); - while (strcmp(s->_predecessor.key, "") != 0) { + while (s->_predecessor.key != nullptr && + strcmp(s->_predecessor.key, "") != 0) { r_edges.push_back(s->_edge); r_vertices.push_back(s->_predecessor); s = backward._pq.find(s->_predecessor);