Blame SOURCES/libvncserver-0.9.11-CVE-2020-14397.patch

07ca88
From 416d7662a3f3ac5131014c6011bf1364d57a27e2 Mon Sep 17 00:00:00 2001
07ca88
From: Tobias Junghans <tobydox@veyon.io>
07ca88
Date: Tue, 3 Nov 2020 13:58:36 -0600
07ca88
Subject: [PATCH] libvncserver: add missing NULL pointer checks
07ca88
07ca88
---
07ca88
 libvncserver/rfbregion.c | 26 ++++++++++++++++----------
07ca88
 libvncserver/rfbserver.c |  4 +++-
07ca88
 2 files changed, 19 insertions(+), 11 deletions(-)
07ca88
07ca88
diff --git a/libvncserver/rfbregion.c b/libvncserver/rfbregion.c
07ca88
index 1947d7c4..1e59646a 100644
07ca88
--- a/libvncserver/rfbregion.c
07ca88
+++ b/libvncserver/rfbregion.c
07ca88
@@ -50,24 +50,30 @@ sraSpanDup(const sraSpan *src) {
07ca88
 
07ca88
 static void
07ca88
 sraSpanInsertAfter(sraSpan *newspan, sraSpan *after) {
07ca88
-  newspan->_next = after->_next;
07ca88
-  newspan->_prev = after;
07ca88
-  after->_next->_prev = newspan;
07ca88
-  after->_next = newspan;
07ca88
+  if (newspan && after) {
07ca88
+    newspan->_next = after->_next;
07ca88
+    newspan->_prev = after;
07ca88
+    after->_next->_prev = newspan;
07ca88
+    after->_next = newspan;
07ca88
+  }
07ca88
 }
07ca88
 
07ca88
 static void
07ca88
 sraSpanInsertBefore(sraSpan *newspan, sraSpan *before) {
07ca88
-  newspan->_next = before;
07ca88
-  newspan->_prev = before->_prev;
07ca88
-  before->_prev->_next = newspan;
07ca88
-  before->_prev = newspan;
07ca88
+  if (newspan && before) {
07ca88
+    newspan->_next = before;
07ca88
+    newspan->_prev = before->_prev;
07ca88
+    before->_prev->_next = newspan;
07ca88
+    before->_prev = newspan;
07ca88
+  }
07ca88
 }
07ca88
 
07ca88
 static void
07ca88
 sraSpanRemove(sraSpan *span) {
07ca88
-  span->_prev->_next = span->_next;
07ca88
-  span->_next->_prev = span->_prev;
07ca88
+  if (span) {
07ca88
+    span->_prev->_next = span->_next;
07ca88
+    span->_next->_prev = span->_prev;
07ca88
+  }
07ca88
 }
07ca88
 
07ca88
 static void
07ca88
diff --git a/libvncserver/rfbserver.c b/libvncserver/rfbserver.c
07ca88
index 1b4dd975..1f4230f2 100644
07ca88
--- a/libvncserver/rfbserver.c
07ca88
+++ b/libvncserver/rfbserver.c
07ca88
@@ -218,6 +218,8 @@ rfbClientIteratorHead(rfbClientIteratorPtr i)
07ca88
 rfbClientPtr
07ca88
 rfbClientIteratorNext(rfbClientIteratorPtr i)
07ca88
 {
07ca88
+  if (!i)
07ca88
+    return NULL;
07ca88
   if(i->next == 0) {
07ca88
     LOCK(rfbClientListMutex);
07ca88
     i->next = i->screen->clientHead;
07ca88
@@ -242,7 +244,7 @@ rfbClientIteratorNext(rfbClientIteratorPtr i)
07ca88
 void
07ca88
 rfbReleaseClientIterator(rfbClientIteratorPtr iterator)
07ca88
 {
07ca88
-  IF_PTHREADS(if(iterator->next) rfbDecrClientRef(iterator->next));
07ca88
+  IF_PTHREADS(if(iterator && iterator->next) rfbDecrClientRef(iterator->next));
07ca88
   free(iterator);
07ca88
 }
07ca88
 
07ca88
-- 
07ca88
2.28.0
07ca88