Changeset 167968 in webkit


Ignore:
Timestamp:
Apr 29, 2014, 4:40:49 PM (11 years ago)
Author:
mitz@apple.com
Message:

<rdar://problem/16745596> [Cocoa] Crash when invoking a method with an unsigned parameter on a remote object
https://bugs.webkit.org/show_bug.cgi?id=132366

Reviewed by Anders Carlsson.

  • Shared/API/Cocoa/WKRemoteObjectCoder.mm:

(encodeInvocation): Handle the 'I' type code. Interpret the 'q' and 'Q' type codes in an
architecture-independent manner.
(decodeInvocationArguments): Ditto.

Location:
trunk/Source/WebKit2
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebKit2/ChangeLog

    r167961 r167968  
     12014-04-29  Dan Bernstein  <mitz@apple.com>
     2
     3        <rdar://problem/16745596> [Cocoa] Crash when invoking a method with an unsigned parameter on a remote object
     4        https://bugs.webkit.org/show_bug.cgi?id=132366
     5
     6        Reviewed by Anders Carlsson.
     7
     8        * Shared/API/Cocoa/WKRemoteObjectCoder.mm:
     9        (encodeInvocation): Handle the 'I' type code. Interpret the 'q' and 'Q' type codes in an
     10        architecture-independent manner.
     11        (decodeInvocationArguments): Ditto.
     12
    1132014-04-29  Roger Fong  <roger_fong@apple.com>
    214
  • trunk/Source/WebKit2/Shared/API/Cocoa/WKRemoteObjectCoder.mm

    r167719 r167968  
    147147        }
    148148
     149        // unsigned
     150        case 'I': {
     151            unsigned value;
     152            [invocation getArgument:&value atIndex:i];
     153
     154            encodeToObjectStream(encoder, @(value));
     155            break;
     156        }
     157
    149158        // char
    150159        case 'c': {
     
    165174        }
    166175
    167         // NSInteger
     176        // long
    168177        case 'q': {
    169             NSInteger value;
     178            long value;
    170179            [invocation getArgument:&value atIndex:i];
    171180
     
    174183        }
    175184
    176         // NSUInteger
     185        // unsigned long
    177186        case 'Q': {
    178             NSUInteger value;
     187            unsigned long value;
    179188            [invocation getArgument:&value atIndex:i];
    180189
     
    422431        }
    423432
     433        // unsigned
     434        case 'I': {
     435            unsigned value = [decodeObjectFromObjectStream(decoder, [NSSet setWithObject:[NSNumber class]]) unsignedIntValue];
     436            [invocation setArgument:&value atIndex:i];
     437            break;
     438        }
     439
    424440        // char
    425441        case 'c': {
     
    436452        }
    437453
    438         // NSInteger
     454        // long
    439455        case 'q': {
    440             NSInteger value = [decodeObjectFromObjectStream(decoder, [NSSet setWithObject:[NSNumber class]]) integerValue];
    441             [invocation setArgument:&value atIndex:i];
    442             break;
    443         }
    444 
    445         // NSUInteger
     456            long value = [decodeObjectFromObjectStream(decoder, [NSSet setWithObject:[NSNumber class]]) longValue];
     457            [invocation setArgument:&value atIndex:i];
     458            break;
     459        }
     460
     461        // unsigned long
    446462        case 'Q': {
    447             NSUInteger value = [decodeObjectFromObjectStream(decoder, [NSSet setWithObject:[NSNumber class]]) unsignedIntegerValue];
     463            unsigned long value = [decodeObjectFromObjectStream(decoder, [NSSet setWithObject:[NSNumber class]]) unsignedLongValue];
    448464            [invocation setArgument:&value atIndex:i];
    449465            break;
Note: See TracChangeset for help on using the changeset viewer.