[haiku-commits] Change in haiku[master]: GIFTranslator: Fix offset free

  • From: Gerrit <review@xxxxxxxxxxxxxxxxxxx>
  • To: waddlesplash <waddlesplash@xxxxxxxxx>, haiku-commits@xxxxxxxxxxxxx
  • Date: Sun, 15 Mar 2020 12:05:23 +0000

From Murai Takashi <tmurai01@xxxxxxxxx>:

Murai Takashi has uploaded this change for review. ( 
https://review.haiku-os.org/c/haiku/+/2354 ;)


Change subject: GIFTranslator: Fix offset free
......................................................................

GIFTranslator: Fix offset free

Re-offset red_error, green_error and blue_error when deleted,
since they are offseted at line 99, 109 and 120
after they are allocated.
Pointed out by Clang Static Analyzer

Change-Id: Ic12a754dff7049fc4fbfd25ababafd8243db6baa
---
M src/add-ons/translators/gif/GIFSave.cpp
1 file changed, 9 insertions(+), 9 deletions(-)



  git pull ssh://git.haiku-os.org:22/haiku refs/changes/54/2354/1

diff --git a/src/add-ons/translators/gif/GIFSave.cpp 
b/src/add-ons/translators/gif/GIFSave.cpp
index 85786bb..2ef698c 100644
--- a/src/add-ons/translators/gif/GIFSave.cpp
+++ b/src/add-ons/translators/gif/GIFSave.cpp
@@ -102,7 +102,7 @@
                green_error = new(std::nothrow) int32[width + 2];
                if (green_error == NULL) {
                        delete palette;
-                       delete[] red_error;
+                       delete[] &red_error[-1];
                        fatalerror = true;
                        return;
                }
@@ -112,8 +112,8 @@
                blue_error = new(std::nothrow) int32[width + 2];
                if (blue_error == NULL) {
                        delete palette;
-                       delete[] red_error;
-                       delete[] green_error;
+                       delete[] &red_error[-1];
+                       delete[] &green_error[-1];
                        fatalerror = true;
                        return;
                }
@@ -186,9 +186,9 @@

        if (WriteGIFHeader() != B_OK) {
                delete palette;
-               delete[] red_error;
-               delete[] green_error;
-               delete[] blue_error;
+               delete[] &red_error[-1];
+               delete[] &green_error[-1];
+               delete[] &blue_error[-1];
                fatalerror = true;
                return;
        }
@@ -199,9 +199,9 @@
        hash = new(std::nothrow) SFHash(1 << 16);
        if (hash == NULL) {
                delete palette;
-               delete[] red_error;
-               delete[] green_error;
-               delete[] blue_error;
+               delete[] &red_error[-1];
+               delete[] &green_error[-1];
+               delete[] &blue_error[-1];
                fatalerror = true;
                return;
        }

--
To view, visit https://review.haiku-os.org/c/haiku/+/2354
To unsubscribe, or for help writing mail filters, visit 
https://review.haiku-os.org/settings

Gerrit-Project: haiku
Gerrit-Branch: master
Gerrit-Change-Id: Ic12a754dff7049fc4fbfd25ababafd8243db6baa
Gerrit-Change-Number: 2354
Gerrit-PatchSet: 1
Gerrit-Owner: Murai Takashi <tmurai01@xxxxxxxxx>
Gerrit-MessageType: newchange

Other related posts:

  • » [haiku-commits] Change in haiku[master]: GIFTranslator: Fix offset free - Gerrit