diff --git a/src/libgourou.cpp b/src/libgourou.cpp index 9d5e3f2..291bdd0 100644 --- a/src/libgourou.cpp +++ b/src/libgourou.cpp @@ -1317,6 +1317,7 @@ namespace gourou std::vector objects = parser.objects(); std::vector::iterator it; std::vector::reverse_iterator rIt; + std::vector ebxObjects; unsigned char decryptedKey[16]; int ebxId; @@ -1327,7 +1328,7 @@ namespace gourou { EBXHandlerFound = true; uPDFParser::Object* ebx = *rIt; - + ebxVersion = (uPDFParser::Integer*)(*ebx)["V"]; if (ebxVersion->value() != 4) { @@ -1338,7 +1339,7 @@ namespace gourou { EXCEPTION(DRM_ERR_ENCRYPTION_KEY, "No ADEPT_LICENSE found"); } - + uPDFParser::String* licenseObject = (uPDFParser::String*)(*ebx)["ADEPT_LICENSE"]; std::string value = licenseObject->value(); @@ -1375,7 +1376,7 @@ namespace gourou if (object->objectId() == ebxId) { - // object->deleteKey("Filter"); + ebxObjects.push_back(object); continue; } @@ -1485,6 +1486,9 @@ namespace gourou } } + for(it = ebxObjects.begin(); it != ebxObjects.end(); it++) + parser.removeObject(*it); + uPDFParser::Object& trailer = parser.getTrailer(); trailer.deleteKey("Encrypt");