ソースを参照

Replaced buffer allocated on the stack with buffer allocated

on the heap.  Reason:  Parsing an attribute with a large number
of bytes resulted in a stack overflow.


git-svn-id: https://svn.microneil.com/svn/CodeDweller/branches/adeniz_1@108 d34b734f-a00e-4b39-a726-e4eeb87269ab
adeniz_1
adeniz 9年前
コミット
cf43979e2d
1個のファイルの変更7行の追加6行の削除
  1. 7
    6
      XMLReader.cpp

+ 7
- 6
XMLReader.cpp ファイルの表示

@@ -21,9 +21,8 @@

// See XMLReader.hpp for details

//debug
#include <iostream>
//end of debug
#include <vector>

#include "CodeDweller/XMLReader.hpp"

using namespace std;
@@ -929,8 +928,9 @@ bool XMLReaderElement::interpret(XMLReaderData& Data) {
) { // then translate the content!
// Create the Content buffer...

int BfrSize = Stopdex - Startdex; // How big a buffer do we need?
char Bfr[BfrSize]; // Make one that size.
int BfrSize = Stopdex - Startdex + 1; // How big a buffer do we need?
vector<char> heapBfr(BfrSize, 0); // Make one that size.
char *Bfr = &(heapBfr[0]);

copyDataCountLines(Bfr, Data, Startdex, Stopdex); // Get our data and ignore our lines.

@@ -1127,7 +1127,8 @@ bool XMLReaderAttribute::interpret(XMLReaderData& Data) {

int BfrSize = Stopdex - Startdex + 1; // How big a buffer do we need?
// Add byte for null terminator.
char Bfr[BfrSize]; // Make one that size.
vector<char> heapBfr(BfrSize, 0); // Make one that size.
char *Bfr = &(heapBfr[0]);

NewLines += copyDataCountLines(Bfr, Data, Startdex, Stopdex); // Get our data and count our lines.


読み込み中…
キャンセル
保存