mirror of the now-defunct rocklinux.org
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

42 lines
1.5 KiB

  1. Index: kpdf/xpdf/Catalog.cc
  2. ===================================================================
  3. RCS file: /home/kde/kdegraphics/kpdf/xpdf/Catalog.cc,v
  4. retrieving revision 1.3.4.1
  5. diff -u -5 -d -p -r1.3.4.1 Catalog.cc
  6. --- ./kpdf/xpdf/Catalog.cc 2 Sep 2004 21:30:18 -0000 1.3.4.1
  7. +++ ./kpdf/xpdf/Catalog.cc 12 Oct 2004 21:15:38 -0000
  8. @@ -62,10 +62,19 @@ Catalog::Catalog(XRef *xrefA) {
  9. obj.getTypeName());
  10. goto err3;
  11. }
  12. pagesSize = numPages0 = (int)obj.getNum();
  13. obj.free();
  14. + // The gcc doesnt optimize this away, so this check is ok,
  15. + // even if it looks like a pagesSize != pagesSize check
  16. + if (pagesSize*sizeof(Page *)/sizeof(Page *) != pagesSize ||
  17. + pagesSize*sizeof(Ref)/sizeof(Ref) != pagesSize) {
  18. + error(-1, "Invalid 'pagesSize'");
  19. + ok = gFalse;
  20. + return;
  21. + }
  22. +
  23. pages = (Page **)gmalloc(pagesSize * sizeof(Page *));
  24. pageRefs = (Ref *)gmalloc(pagesSize * sizeof(Ref));
  25. for (i = 0; i < pagesSize; ++i) {
  26. pages[i] = NULL;
  27. pageRefs[i].num = -1;
  28. @@ -189,10 +198,14 @@ int Catalog::readPageTree(Dict *pagesDic
  29. ++start;
  30. goto err3;
  31. }
  32. if (start >= pagesSize) {
  33. pagesSize += 32;
  34. + if (pagesSize*sizeof(Page *)/sizeof(Page *) != pagesSize) {
  35. + error(-1, "Invalid 'pagesSize' parameter.");
  36. + goto err3;
  37. + }
  38. pages = (Page **)grealloc(pages, pagesSize * sizeof(Page *));
  39. pageRefs = (Ref *)grealloc(pageRefs, pagesSize * sizeof(Ref));
  40. for (j = pagesSize - 32; j < pagesSize; ++j) {
  41. pages[j] = NULL;
  42. pageRefs[j].num = -1;