mirror of
https://github.com/hrydgard/ppsspp.git
synced 2025-04-02 11:01:50 -04:00
Making sure getAllResponseHeaders not to crash.
This commit is contained in:
parent
f500726762
commit
aeb6c7b512
1 changed files with 14 additions and 8 deletions
|
@ -146,8 +146,8 @@ int HTTPRequest::getAllResponseHeaders(u32 headerAddrPtr, u32 headerSizePtr) {
|
|||
const std::string& s = httpLine_ + delim + imploded.str();
|
||||
u32 sz = (u32)s.size();
|
||||
|
||||
u32* headerAddr = (u32*)Memory::GetPointerUnchecked(headerAddrPtr);
|
||||
u32* headerSize = (u32*)Memory::GetPointerUnchecked(headerSizePtr);
|
||||
auto headerAddr = PSPPointer<u32>::Create(headerAddrPtr);
|
||||
auto headerSize = PSPPointer<u32>::Create(headerSizePtr);
|
||||
// Resize internal header buffer (should probably be part of network memory pool?)
|
||||
// FIXME: Do we still need to provides a valid address for the game even when header size is 0 ?
|
||||
if (headerSize_ != sz && sz > 0) {
|
||||
|
@ -159,8 +159,8 @@ int HTTPRequest::getAllResponseHeaders(u32 headerAddrPtr, u32 headerSizePtr) {
|
|||
}
|
||||
|
||||
u8* header = Memory::GetPointerWrite(headerAddr_);
|
||||
DEBUG_LOG(Log::sceNet, "headerAddr: %08x => %08x", *headerAddr, headerAddr_);
|
||||
DEBUG_LOG(Log::sceNet, "headerSize: %d => %d", *headerSize, sz);
|
||||
DEBUG_LOG(Log::sceNet, "headerAddr: %08x => %08x", headerAddr.IsValid() ? *headerAddr : 0, headerAddr_);
|
||||
DEBUG_LOG(Log::sceNet, "headerSize: %d => %d", headerSize.IsValid() ? *headerSize : 0, sz);
|
||||
if (!header && sz > 0) {
|
||||
ERROR_LOG(Log::sceNet, "Failed to allocate internal header buffer.");
|
||||
//*headerSize = 0;
|
||||
|
@ -172,11 +172,17 @@ int HTTPRequest::getAllResponseHeaders(u32 headerAddrPtr, u32 headerSizePtr) {
|
|||
memcpy(header, s.c_str(), sz);
|
||||
NotifyMemInfo(MemBlockFlags::WRITE, headerAddr_, sz, "HttpGetAllHeader");
|
||||
}
|
||||
*headerSize = sz;
|
||||
NotifyMemInfo(MemBlockFlags::WRITE, headerSizePtr, 4, "HttpGetAllHeader");
|
||||
|
||||
*headerAddr = headerAddr_;
|
||||
NotifyMemInfo(MemBlockFlags::WRITE, headerAddrPtr, 4, "HttpGetAllHeader");
|
||||
// Set the output
|
||||
if (headerSize.IsValid()) {
|
||||
*headerSize = sz;
|
||||
headerSize.NotifyWrite("HttpGetAllHeader");
|
||||
}
|
||||
|
||||
if (headerAddr.IsValid()) {
|
||||
*headerAddr = headerAddr_;
|
||||
headerAddr.NotifyWrite("HttpGetAllHeader");
|
||||
}
|
||||
|
||||
DEBUG_LOG(Log::sceNet, "Headers: %s", s.c_str());
|
||||
return 0;
|
||||
|
|
Loading…
Add table
Reference in a new issue