From 02ab820d0e26d680b9d158024b1cde1bc5ded6c0 Mon Sep 17 00:00:00 2001 From: Philippe Saint-Pierre Date: Wed, 1 Jul 2015 22:18:11 -0400 Subject: [PATCH] Backgrounds: FlattenedSize() can be negative (error status) CID 610928. --- src/preferences/backgrounds/BackgroundImage.cpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/preferences/backgrounds/BackgroundImage.cpp b/src/preferences/backgrounds/BackgroundImage.cpp index f5c94892dc..e0a8a4449c 100644 --- a/src/preferences/backgrounds/BackgroundImage.cpp +++ b/src/preferences/backgrounds/BackgroundImage.cpp @@ -494,7 +494,10 @@ BackgroundImage::SetBackgroundImage(BNode* node) PRINT_OBJECT(container); - size_t flattenedSize = container.FlattenedSize(); + ssize_t flattenedSize = container.FlattenedSize(); + if (flattenedSize < B_OK) + return flattenedSize; + char* buffer = new(std::nothrow) char[flattenedSize]; if (buffer == NULL) return B_NO_MEMORY; @@ -511,7 +514,7 @@ BackgroundImage::SetBackgroundImage(BNode* node) if (size < B_OK) return size; - if ((size_t)size != flattenedSize) + if (size != flattenedSize) return B_ERROR; return B_OK;