Error out on NULL pointers before doing talloc_get_type_abort in verify functions
authorArran Cudbard-Bell <a.cudbardb@freeradius.org>
Wed, 18 Jun 2014 13:29:50 +0000 (14:29 +0100)
committerArran Cudbard-Bell <a.cudbardb@freeradius.org>
Wed, 18 Jun 2014 13:31:46 +0000 (14:31 +0100)
src/lib/debug.c
src/main/util.c

index 1fe0366..53d5ae7 100644 (file)
@@ -820,6 +820,12 @@ void fr_fault_set_log_fd(int fd)
  */
 inline void fr_verify_vp(char const *file, int line, VALUE_PAIR const *vp)
 {
+       if (!vp) {
+               fprintf(stderr, "CONSISTENCY CHECK FAILED %s[%u]: VALUE_PAIR pointer was NULL", file, line);
+               fr_assert(0);
+               fr_exit_now(0);
+       }
+
        (void) talloc_get_type_abort(vp, VALUE_PAIR);
 
        if (vp->data.ptr) switch (vp->da->type) {
index 71095dd..9eda2cb 100644 (file)
@@ -1070,7 +1070,11 @@ static void verify_packet(char const *file, int line, REQUEST *request, RADIUS_P
 {
        TALLOC_CTX *parent;
 
-       if (!packet) return;
+       if (!packet) {
+               fprintf(stderr, "CONSISTENCY CHECK FAILED %s[%u]: RADIUS_PACKET pointer was NULL", file, line);
+               fr_assert(0);
+               fr_exit_now(0);
+       }
 
        parent = talloc_parent(packet);
        if (parent != request) {
@@ -1097,7 +1101,11 @@ static void verify_packet(char const *file, int line, REQUEST *request, RADIUS_P
  */
 void verify_request(char const *file, int line, REQUEST *request)
 {
-       if (!request) return;
+       if (!request) {
+               fprintf(stderr, "CONSISTENCY CHECK FAILED %s[%u]: REQUEST pointer was NULL", file, line);
+               fr_assert(0);
+               fr_exit_now(0);
+       }
 
        (void) talloc_get_type_abort(request, REQUEST);