Bug 165977

Summary: WebAssembly: test imports and exports with 16-bit characters
Product: WebKit Reporter: JF Bastien <jfbastien>
Component: JavaScriptCoreAssignee: JF Bastien <jfbastien>
Status: RESOLVED FIXED    
Severity: Normal CC: buildbot, commit-queue, ggaren, jfbastien, keith_miller, mark.lam, msaboff, saam, webkit-bug-importer
Priority: P2 Keywords: InRadar
Version: WebKit Nightly Build   
Hardware: Unspecified   
OS: Unspecified   
Bug Depends on:    
Bug Blocks: 161709    
Attachments:
Description Flags
patch
saam: review+, saam: commit-queue-
patch none

Description JF Bastien 2016-12-16 16:35:16 PST
The Builder should already handle these, but the parser uses consumeUTF8String which is suspicious.
Comment 1 Saam Barati 2016-12-16 16:36:30 PST
*** Bug 165976 has been marked as a duplicate of this bug. ***
Comment 2 Saam Barati 2016-12-16 16:38:52 PST
(In reply to comment #0)
> The Builder should already handle these, but the parser uses
> consumeUTF8String which is suspicious.

To elaborate, the implementation of consumeUTF8String looks wrong. Not the actual call to it. The implementation skips m_offset stringLength forward, which is wrong for 16 bit strings.
Comment 3 Saam Barati 2016-12-16 16:40:13 PST
(In reply to comment #2)
> (In reply to comment #0)
> > The Builder should already handle these, but the parser uses
> > consumeUTF8String which is suspicious.
> 
> To elaborate, the implementation of consumeUTF8String looks wrong. Not the
> actual call to it. The implementation skips m_offset stringLength forward,
> which is wrong for 16 bit strings.

Nevermind. We're treating a field of number of bytes from wasm as the *string length*. This is obviously wrong for 16 bit strings.
Comment 4 Radar WebKit Bug Importer 2016-12-20 14:20:25 PST
<rdar://problem/29760130>
Comment 5 JF Bastien 2017-06-07 17:13:49 PDT
Created attachment 312256 [details]
patch
Comment 6 Saam Barati 2017-06-07 17:22:33 PDT
Comment on attachment 312256 [details]
patch

View in context: https://bugs.webkit.org/attachment.cgi?id=312256&action=review

r=me

> Source/JavaScriptCore/wasm/js/JSWebAssemblyInstance.cpp:141
> +        return before + String(" ") + String::fromUTF8(import.module) + ":" + String::fromUTF8(import.field) + " " + after;

you should use makeString here
Comment 7 JF Bastien 2017-06-07 21:04:34 PDT
Created attachment 312275 [details]
patch

Use makeString.
Comment 8 WebKit Commit Bot 2017-06-07 21:43:54 PDT
Comment on attachment 312275 [details]
patch

Clearing flags on attachment: 312275

Committed r217921: <http://trac.webkit.org/changeset/217921>
Comment 9 WebKit Commit Bot 2017-06-07 21:43:56 PDT
All reviewed patches have been landed.  Closing bug.