Author: stippi Date: 2011-04-04 17:36:23 +0200 (Mon, 04 Apr 2011) New Revision: 41182 Changeset: https://dev.haiku-os.org/changeset/41182 Modified: haiku/trunk/src/apps/icon-o-matic/generic/gui/scrollview/ScrollView.cpp Log: Fixed buffer overrun, CID 4338. Modified: haiku/trunk/src/apps/icon-o-matic/generic/gui/scrollview/ScrollView.cpp =================================================================== --- haiku/trunk/src/apps/icon-o-matic/generic/gui/scrollview/ScrollView.cpp 2011-04-04 09:39:25 UTC (rev 41181) +++ haiku/trunk/src/apps/icon-o-matic/generic/gui/scrollview/ScrollView.cpp 2011-04-04 15:36:23 UTC (rev 41182) @@ -138,31 +138,34 @@ fStartPoint(0, 0), fStartScrollOffset(0, 0) { -//printf("ScrollCorner::ScrollCorner(%p)\n", scrollView); SetViewColor(B_TRANSPARENT_32_BIT); -//printf("setting up bitmap 0\n"); - fBitmaps[0] = new BBitmap(BRect(0.0f, 0.0f, sBitmapWidth, sBitmapHeight), sColorSpace); -// fBitmaps[0]->SetBits((void *)sScrollCornerNormalBits, fBitmaps[0]->BitsLength(), 0L, sColorSpace); - char *bits = (char *)fBitmaps[0]->Bits(); + + fBitmaps[0] = new BBitmap(BRect(0.0f, 0.0f, sBitmapWidth - 1, + sBitmapHeight - 1), sColorSpace); + char* bits = (char*)fBitmaps[0]->Bits(); int32 bpr = fBitmaps[0]->BytesPerRow(); - for (int i = 0; i <= sBitmapHeight; i++, bits += bpr) - memcpy(bits, &sScrollCornerNormalBits[i * sBitmapHeight * 4], sBitmapWidth * 4); + for (int i = 0; i < sBitmapHeight; i++, bits += bpr) { + memcpy(bits, &sScrollCornerNormalBits[i * sBitmapHeight * 4], + sBitmapWidth * 4); + } -//printf("setting up bitmap 1\n"); - fBitmaps[1] = new BBitmap(BRect(0.0f, 0.0f, sBitmapWidth, sBitmapHeight), sColorSpace); -// fBitmaps[1]->SetBits((void *)sScrollCornerPushedBits, fBitmaps[1]->BitsLength(), 0L, sColorSpace); - bits = (char *)fBitmaps[1]->Bits(); + fBitmaps[1] = new BBitmap(BRect(0.0f, 0.0f, sBitmapWidth - 1, + sBitmapHeight - 1), sColorSpace); + bits = (char*)fBitmaps[1]->Bits(); bpr = fBitmaps[1]->BytesPerRow(); - for (int i = 0; i <= sBitmapHeight; i++, bits += bpr) - memcpy(bits, &sScrollCornerPushedBits[i * sBitmapHeight * 4], sBitmapWidth * 4); + for (int i = 0; i < sBitmapHeight; i++, bits += bpr) { + memcpy(bits, &sScrollCornerPushedBits[i * sBitmapHeight * 4], + sBitmapWidth * 4); + } -//printf("setting up bitmap 2\n"); - fBitmaps[2] = new BBitmap(BRect(0.0f, 0.0f, sBitmapWidth, sBitmapHeight), sColorSpace); -// fBitmaps[2]->SetBits((void *)sScrollCornerDisabledBits, fBitmaps[2]->BitsLength(), 0L, sColorSpace); - bits = (char *)fBitmaps[2]->Bits(); + fBitmaps[2] = new BBitmap(BRect(0.0f, 0.0f, sBitmapWidth - 1, + sBitmapHeight - 1), sColorSpace); + bits = (char*)fBitmaps[2]->Bits(); bpr = fBitmaps[2]->BytesPerRow(); - for (int i = 0; i <= sBitmapHeight; i++, bits += bpr) - memcpy(bits, &sScrollCornerDisabledBits[i * sBitmapHeight * 4], sBitmapWidth * 4); + for (int i = 0; i < sBitmapHeight; i++, bits += bpr) { + memcpy(bits, &sScrollCornerDisabledBits[i * sBitmapHeight * 4], + sBitmapWidth * 4); + } } // destructor