Showing the changes to libraries/script-engine/src/ArrayBufferClass.cpp (1 of 7 files). Show all
Unified · Split
| @@ -48,7 +48,17 @@ _scriptEngine(scriptEngine) { · 47 unmodified lines | ||
| 48 | 48 | engine()->globalObject().setProperty(name(), _ctor); |
| 49 | 49 | } |
| 50 | 50 | |
| 51 | −QScriptValue ArrayBufferClass::newInstance(quint32 size) { | |
| 51 | +QScriptValue ArrayBufferClass::newInstance(qint32 size) { | |
| 52 | + const qint32 MAX_LENGTH = 100000000; | |
| 53 | + if (size < 0) { | |
| 54 | + engine()->evaluate("throw \"ArgumentError: negative length\""); | |
| 55 | + return QScriptValue(); | |
| 56 | + } | |
| 57 | + if (size > MAX_LENGTH) { | |
| 58 | + engine()->evaluate("throw \"ArgumentError: absurd length\""); | |
| 59 | + return QScriptValue(); | |
| 60 | + } | |
| 61 | + | |
| 52 | 62 | engine()->reportAdditionalMemoryCost(size); |
| 53 | 63 | QScriptEngine* eng = engine(); |
| 54 | 64 | QVariant variant = QVariant::fromValue(QByteArray(size, 0)); |