[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: kdegraphics/kpdf/xpdf
From: Dirk Mueller <mueller () kde ! org>
Date: 2004-10-28 8:08:45
Message-ID: 20041028080845.DF41616CA8 () office ! kde ! org
[Download RAW message or body]
CVS commit by mueller:
the "unbreak integer overflow checks". *sigh*, never trust a patch from suse.
M +6 -6 Catalog.cc 1.7
M +7 -6 XRef.cc 1.7
--- kdegraphics/kpdf/xpdf/Catalog.cc #1.6:1.7
@@ -13,4 +13,5 @@
#endif
+#include <limits.h>
#include <stddef.h>
#include "gmem.h"
@@ -65,8 +66,7 @@ Catalog::Catalog(XRef *xrefA) {
pagesSize = numPages0 = (int)obj.getNum();
obj.free();
- // The gcc doesnt optimize this away, so this check is ok,
- // even if it looks like a pagesSize != pagesSize check
- if (pagesSize*sizeof(Page *)/sizeof(Page *) != (unsigned int)pagesSize ||
- pagesSize*sizeof(Ref)/sizeof(Ref) != (unsigned int)pagesSize) {
+ if ((pagesSize >= INT_MAX / (signed) sizeof(Page *)) ||
+ (pagesSize >= INT_MAX / (signed) sizeof(Ref)))
+ {
error(-1, "Invalid 'pagesSize'");
ok = gFalse;
@@ -201,6 +201,6 @@ int Catalog::readPageTree(Dict *pagesDic
if (start >= pagesSize) {
pagesSize += 32;
- if (pagesSize*sizeof(Page *)/sizeof(Page *) != (unsigned int)pagesSize ||
- pagesSize*sizeof(Ref)/sizeof(Ref) != (unsigned int)pagesSize) {
+ if (pagesSize >= INT_MAX / (signed) sizeof(Page*) ||
+ pagesSize >= INT_MAX / (signed) sizeof(Ref)) {
error(-1, "Invalid 'pagesSize' parameter.");
goto err3;
--- kdegraphics/kpdf/xpdf/XRef.cc #1.6:1.7
@@ -13,4 +13,5 @@
#endif
+#include <limits.h>
#include <stdlib.h>
#include <stddef.h>
@@ -111,5 +112,5 @@ ObjectStream::ObjectStream(XRef *xref, i
}
- if (nObjects*sizeof(int)/sizeof(int) != (uint)nObjects) {
+ if (nObjects >= INT_MAX / (signed) sizeof(int)) {
error(-1, "Invalid 'nObjects'");
goto err1;
@@ -394,5 +395,5 @@ GBool XRef::readXRefTable(Parser *parser
goto err1;
}
- if (newSize*sizeof(XRefEntry)/sizeof(XRefEntry) != (uint)newSize) {
+ if (newSize >= INT_MAX / (signed) sizeof(XRefEntry)) {
error(-1, "Invalid 'obj' parameters'");
goto err1;
@@ -504,5 +505,5 @@ GBool XRef::readXRefStream(Stream *xrefS
}
if (newSize > size) {
- if (newSize * sizeof(XRefEntry)/sizeof(XRefEntry) != (uint)newSize) {
+ if (newSize >= INT_MAX / (signed) sizeof(XRefEntry)) {
error(-1, "Invalid 'size' parameter.");
return gFalse;
@@ -598,5 +599,5 @@ GBool XRef::readXRefStreamSection(Stream
return gFalse;
}
- if (newSize*sizeof(XRefEntry)/sizeof(XRefEntry) != (uint)newSize) {
+ if (newSize >= INT_MAX / (signed) sizeof(XRefEntry)) {
error(-1, "Invalid 'size' inside xref table.");
return gFalse;
@@ -737,5 +738,5 @@ GBool XRef::constructXRef() {
return gFalse;
}
- if (newSize*sizeof(XRefEntry)/sizeof(XRefEntry) != (uint)newSize) {
+ if (newSize >= INT_MAX / (signed) sizeof(XRefEntry)) {
error(-1, "Invalid 'obj' parameters.");
return gFalse;
@@ -764,5 +765,5 @@ GBool XRef::constructXRef() {
if (streamEndsLen == streamEndsSize) {
streamEndsSize += 64;
- if (streamEndsSize*sizeof(int)/sizeof(int) != (uint)streamEndsSize) {
+ if (streamEndsSize >= INT_MAX / (signed) sizeof(int)) {
error(-1, "Invalid 'endstream' parameter.");
return gFalse;
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic