Skip to content

Commit

Permalink
Revert "Cherry-pick 80c45a1. rdar://113527046"
Browse files Browse the repository at this point in the history
This reverts commit 766247c.

Identifier: 267815.314@safari-7617.1.11.13-branch
  • Loading branch information
MyahCobbs committed Oct 16, 2023
1 parent 1d5fdc3 commit ef7a3d7
Showing 1 changed file with 7 additions and 23 deletions.
30 changes: 7 additions & 23 deletions Source/WebKit/Shared/API/Cocoa/WKRemoteObjectCoder.mm
Original file line number Diff line number Diff line change
Expand Up @@ -799,25 +799,10 @@ static id decodeObjectFromObjectStream(WKRemoteObjectDecoder *decoder, const Has
(__bridge CFTypeRef)NSUUID.class,
(__bridge CFTypeRef)NSError.class,
(__bridge CFTypeRef)NSURLError.class,
(__bridge CFTypeRef)NSDate.class,
(__bridge CFTypeRef)NSDecimalNumber.class,
(__bridge CFTypeRef)NSClassFromString(@"NSDecimalNumberPlaceholder"),
} };
return classes.get();
}

NO_RETURN static void crashWithClassName(const char* className)
{
std::array<uint64_t, 6> values { 0, 0, 0, 0, 0, 0 };
strncpy(reinterpret_cast<char*>(values.data()), className, sizeof(values));
CRASH_WITH_INFO(values[0], values[1], values[2], values[3], values[4], values[5]);
}

NO_RETURN static void crashWithClassName(Class objectClass)
{
crashWithClassName(NSStringFromClass(objectClass).UTF8String);
}

static void checkIfClassIsAllowed(WKRemoteObjectDecoder *decoder, Class objectClass)
{
auto* allowedClasses = decoder->_allowedClasses;
Expand All @@ -830,7 +815,10 @@ static void checkIfClassIsAllowed(WKRemoteObjectDecoder *decoder, Class objectCl
if (alwaysAllowedClasses().contains((__bridge CFTypeRef)objectClass))
return;

crashWithClassName(objectClass);
NSString *message = [NSString stringWithFormat:@"%@,%@", NSStringFromClass(objectClass), decoder.allowedClasses];
std::array<uint64_t, 6> values { 0, 0, 0, 0, 0, 0 };
strncpy(reinterpret_cast<char*>(values.data()), message.UTF8String, sizeof(values));
CRASH_WITH_INFO(values[0], values[1], values[2], values[3], values[4], values[5]);
}

static void validateClass(WKRemoteObjectDecoder *decoder, Class objectClass)
Expand All @@ -843,12 +831,8 @@ static void validateClass(WKRemoteObjectDecoder *decoder, Class objectClass)
if (objectClass == [NSInvocation class] || objectClass == [NSBlockInvocation class])
return;

@try {
if (![decoder validateClassSupportsSecureCoding:objectClass])
[NSException raise:NSInvalidUnarchiveOperationException format:@"Object of class \"%@\" does not support NSSecureCoding.", objectClass];
} @catch(NSException *exception) {
crashWithClassName(objectClass);
}
if (![decoder validateClassSupportsSecureCoding:objectClass])
[NSException raise:NSInvalidUnarchiveOperationException format:@"Object of class \"%@\" does not support NSSecureCoding.", objectClass];
}

static void decodeInvocationArguments(WKRemoteObjectDecoder *decoder, NSInvocation *invocation, const Vector<HashSet<CFTypeRef>>& allowedArgumentClasses, NSUInteger firstArgument)
Expand Down Expand Up @@ -1050,7 +1034,7 @@ static id decodeObject(WKRemoteObjectDecoder *decoder)

Class objectClass = objc_lookUpClass(className.data());
if (!objectClass)
crashWithClassName(className.data());
[NSException raise:NSInvalidUnarchiveOperationException format:@"Class \"%s\" does not exist", className.data()];

validateClass(decoder, objectClass);

Expand Down

0 comments on commit ef7a3d7

Please sign in to comment.