> On Jun 23, 2018, at 7:45 AM, Alex Harui <[email protected]> wrote:
> 
> Thanks for digging into it.
> 
> If I understand correctly, the AS code had a bug and should not have had the 
> s[] code in it.

Correct.

> The JS problem is interesting.  Some internet articles claim that JS does not 
> have integers at all.  So not sure what to make of the article you linked to. 
>  The code in the JS MD5 implementation is solving some other problem.  It 
> does not seem to try to sign extend the values, maybe because the values in 
> an MD5 calculation are all unsigned.
> 
> We may need to understand which modern browsers that we support (IE11, 
> Chrome, FireFox, Android, IOS Safari) might have these issues.  We might have 
> to generate a "safeAdd()" instead of just "+" when we know the types are all 
> integers.  And implement smarter coercions as described in the article you 
> linked to.  Which browser(s) did you test with?

Chrome, Firefox and Safari. All on Mac.

I’ve used BinaryData pretty extensively and I haven’t had issues. I don’t 
understand why MD5 was failing, but it seems like whatever the issue is is 
pretty fringe.

> -Alex
> 
> On 6/22/18, 3:21 AM, "Harbs" <[email protected] 
> <mailto:[email protected]>> wrote:
> 
>    In Flash, the error is ReferenceError: Error: 1069.
> 
>    I took another look and it looks like the problem is the bracketed access 
> to the BinaryData.
> 
>    The code s[ i / 8 ] needs to be changed to either s.readByteAt(i/8) or 
> s.array[i/8].
> 
>    Making either of these changes fixed the Flash error, but did not fix the 
> JS error:
>    expected 80338e79d2ca9b9c090ebaaa2ef293c7 but was: 
> 996f93cb21f81b54962909fd0ea18074
> 
>    I’m guessing that the problem is related to the comment here in the JS MD5 
> implementation:
> 
>               * Add integers, wrapping at 2^32. This uses 16-bit operations 
> internally
>               * to work around bugs in some JS interpreters.
> 
>    I think part of the problem is that JS only has 32 bit ints. I did not 
> follow this article completely, but this might shed some light:
>    
> https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fblog.vjeux.com%2F2013%2Fjavascript%2Fconversion-from-uint8-to-int8-x-24.html&data=02%7C01%7Caharui%40adobe.com%7C21a1876d2a9b4e569ba008d5d829de4a%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C636652596694550635&sdata=YyxMW%2BZfeuhZ1x8w%2BMxetw8FoZGhEqU0jIkZxyDc%2Bpg%3D&reserved=0
>  
> <https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fblog.vjeux.com%2F2013%2Fjavascript%2Fconversion-from-uint8-to-int8-x-24.html&data=02%7C01%7Caharui%40adobe.com%7C21a1876d2a9b4e569ba008d5d829de4a%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C636652596694550635&sdata=YyxMW%2BZfeuhZ1x8w%2BMxetw8FoZGhEqU0jIkZxyDc%2Bpg%3D&reserved=0>
>  
> <https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fblog.vjeux.com%2F2013%2Fjavascript%2Fconversion-from-uint8-to-int8-x-24.html&data=02%7C01%7Caharui%40adobe.com%7C21a1876d2a9b4e569ba008d5d829de4a%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C636652596694550635&sdata=YyxMW%2BZfeuhZ1x8w%2BMxetw8FoZGhEqU0jIkZxyDc%2Bpg%3D&reserved=0
>  
> <https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fblog.vjeux.com%2F2013%2Fjavascript%2Fconversion-from-uint8-to-int8-x-24.html&data=02%7C01%7Caharui%40adobe.com%7C21a1876d2a9b4e569ba008d5d829de4a%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C636652596694550635&sdata=YyxMW%2BZfeuhZ1x8w%2BMxetw8FoZGhEqU0jIkZxyDc%2Bpg%3D&reserved=0>>
> 
>    Harbs
> 
>> On Jun 22, 2018, at 9:22 AM, Alex Harui <[email protected]> wrote:
>> 
>> On 6/21/18, 11:20 AM, "Harbs" <[email protected]> wrote:
>> 
>>   The MD5 test actually failed in Flash too. Although the error was 
>> different.
>> 
>>   I’m not sure why it was failing. I’m pretty sure the code was the same as 
>> the Flex version with ByteArray swapped for BinaryData.
>> 
>> Even more bothersome.  We really should dig deeper on this.  We can't have 
>> other people's business logic have similar issues.  Any volunteers?
>> 
>> -Alex

Reply via email to