buf_copy(): Fail if there's no data to write or nothing to do
authorFabian Keil <fk@fabiankeil.de>
Sat, 6 Feb 2021 10:52:37 +0000 (11:52 +0100)
committerFabian Keil <fk@fabiankeil.de>
Sun, 21 Feb 2021 16:30:16 +0000 (17:30 +0100)
Prevents undefined behaviour "applying zero offset to null pointer".

Reported by: Joshua Rogers (Opera)

deanimate.c

index 494e6a8..b0f3f1f 100644 (file)
@@ -131,6 +131,14 @@ static int buf_extend(struct binbuffer *buf, size_t length)
  *********************************************************************/
 static int buf_copy(struct binbuffer *src, struct binbuffer *dst, size_t length)
 {
+   /*
+    * Sanity check: Make sure the source buffer contains
+    * data and there's work to be done.
+    */
+   if (src->buffer == NULL || src->size == 0 || length == 0)
+   {
+      return 1;
+   }
 
    /*
     * Sanity check: Can't copy more data than we have