<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>292721</bug_id>
          
          <creation_ts>2025-05-08 07:35:28 -0700</creation_ts>
          <short_desc>TypedArray in IndexedDb key is mangled</short_desc>
          <delta_ts>2026-01-25 21:43:01 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>Safari 18</version>
          <rep_platform>Mac (Apple Silicon)</rep_platform>
          <op_sys>macOS 14</op_sys>
          <bug_status>NEW</bug_status>
          <resolution></resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>165889</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter>markduckworth</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>ahmad.saleem792</cc>
    
    <cc>marcosc</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>2115871</commentid>
    <comment_count>0</comment_count>
      <attachid>475167</attachid>
    <who name="">markduckworth</who>
    <bug_when>2025-05-08 07:35:28 -0700</bug_when>
    <thetext>Created attachment 475167
Full reproduction

The result of this bug is that keys are incorrectly computed in WebKit and Safari. Reads based on key or range are not accurate. Reproducible with the following setup:

Create an object store with key path consisting of two or more fields.

```
const openDBRequest = indexedDB.open(dbName, version);
let db;

openDBRequest.onupgradeneeded = event =&gt; {
  db = event.target.result;

  if (!db.objectStoreNames.contains(storeName)) {
    const objectStore = db.createObjectStore(storeName, {
      keyPath: [&apos;bar&apos;, &apos;baz&apos;]
    });
  }
};
```

Add data, where any field but the last field in the key is a typed array value.

```
const transaction = db.transaction([storeName], &apos;readwrite&apos;);
const objectStore = transaction.objectStore(storeName);
const put = objectStore.put({
    bar: new Uint8Array([1,2,3]),
    baz: 1
});
```

Read the key for the value you just wrote and see that the key value representing `bar` is not an accurate representation of the value on the object.

```
objectStore.getAllKeys().onsuccess = evt =&gt; {
  const idbValidKeys = evt.target.result;
  idbValidKeys.forEach(idbValidKey =&gt; {
    // UNEXPECTED BEHAVIOR:
    // Should equal new Uint8Array([1, 2, 3])
    console.log(new Uint8Array(idbValidKey[0]));

    // This is right
    console.log(idbValidKey[1]);
  });
};
```

A full reproduction is attached.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2117332</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2025-05-15 07:36:17 -0700</bug_when>
    <thetext>&lt;rdar://problem/151384267&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2117793</commentid>
    <comment_count>2</comment_count>
    <who name="Ahmad Saleem">ahmad.saleem792</who>
    <bug_when>2025-05-16 16:33:25 -0700</bug_when>
    <thetext>@Mark - by any chance, you know whether it is recent regression + if it affects any live website on Google?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2118110</commentid>
    <comment_count>3</comment_count>
    <who name="">markduckworth</who>
    <bug_when>2025-05-19 08:56:33 -0700</bug_when>
    <thetext>I&apos;m not sure if this is a recent regression in WebKit. We discovered it when improving our test coverage. This affected older versions of the Firestore SDK, so it could affect customers still on those older SDKs with a specific, non-default SDK configuration. Our workaround is to encode byte values in a string, which increases memory use. So we will revisit Uint8Array if/when this is updated in WebKit.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>475167</attachid>
            <date>2025-05-08 07:35:28 -0700</date>
            <delta_ts>2025-05-08 07:35:28 -0700</delta_ts>
            <desc>Full reproduction</desc>
            <filename>idbtest.html</filename>
            <type>text/html</type>
            <size>2647</size>
            <attacher>markduckworth</attacher>
            
              <data encoding="base64">PCFkb2N0eXBlIGh0bWw+CjxodG1sPgogIDxoZWFkPgogICAgPHRpdGxlPlR5cGVkQXJyYXkgaW4g
SW5kZXhlZERiIGtleSBpcyBtYW5nbGVkPC90aXRsZT4KICA8L2hlYWQ+CiAgPGJvZHk+CiAgICA8
c2NyaXB0PgogICAgICBjb25zdCBkYk5hbWUgPSAnbXlEYXRhYmFzZSc7CiAgICAgIGNvbnN0IHN0
b3JlTmFtZSA9ICdteU9iamVjdHMnOwogICAgICBjb25zdCB2ZXJzaW9uID0gMjsKCiAgICAgIGFz
eW5jIGZ1bmN0aW9uIGRlbGV0ZURiKCkgewogICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVz
b2x2ZSwgcmVqZWN0KSA9PiB7CiAgICAgICAgICBjb25zdCByZXF1ZXN0ID0gaW5kZXhlZERCLmRl
bGV0ZURhdGFiYXNlKGRiTmFtZSk7CiAgICAgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHJlc29s
dmU7CiAgICAgICAgICByZXF1ZXN0Lm9uZXJyb3IgPSByZWplY3Q7CiAgICAgICAgfSkKICAgICAg
fQoKICAgICAgLy8gSEVMUEVSCiAgICAgIGFzeW5jIGZ1bmN0aW9uIG9wZW5EYigpIHsKICAgICAg
ICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4gewogICAgICAgICAgY29u
c3Qgb3BlbkRCUmVxdWVzdCA9IGluZGV4ZWREQi5vcGVuKGRiTmFtZSwgdmVyc2lvbik7CiAgICAg
ICAgICBsZXQgZGI7CgogICAgICAgICAgb3BlbkRCUmVxdWVzdC5vbnVwZ3JhZGVuZWVkZWQgPSBl
dmVudCA9PiB7CiAgICAgICAgICAgIGRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsKCiAgICAgICAg
ICAgIGlmICghZGIub2JqZWN0U3RvcmVOYW1lcy5jb250YWlucyhzdG9yZU5hbWUpKSB7CiAgICAg
ICAgICAgICAgY29uc3Qgb2JqZWN0U3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZShzdG9yZU5h
bWUsIHsKICAgICAgICAgICAgICAgIGtleVBhdGg6IFsnYmFyJywgJ2JheiddCiAgICAgICAgICAg
ICAgfSk7CiAgICAgICAgICAgIH0KICAgICAgICAgIH07CgogICAgICAgICAgb3BlbkRCUmVxdWVz
dC5vbmVycm9yID0gZXZlbnQgPT4gewogICAgICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBv
cGVuaW5nIGRhdGFiYXNlOicsIGV2ZW50LnRhcmdldC5lcnJvcik7CiAgICAgICAgICAgIHJlamVj
dChldmVudC50YXJnZXQuZXJyb3IpOwogICAgICAgICAgfTsKCiAgICAgICAgICBvcGVuREJSZXF1
ZXN0Lm9uc3VjY2VzcyA9IGFzeW5jIGV2ZW50ID0+IHsKICAgICAgICAgICAgZGIgPSBldmVudC50
YXJnZXQucmVzdWx0OwogICAgICAgICAgICBjb25zb2xlLmxvZygnRGF0YWJhc2Ugb3BlbmVkIHN1
Y2Nlc3NmdWxseS4nKTsKICAgICAgICAgICAgcmVzb2x2ZShkYik7CiAgICAgICAgICB9OwogICAg
ICAgIH0pOwogICAgICB9CgogICAgICAvLyBIRUxQRVIKICAgICAgYXN5bmMgZnVuY3Rpb24gcHV0
RGF0YShkYiwgb2JqKSB7CiAgICAgICAgY29uc3QgdHJhbnNhY3Rpb24gPSBkYi50cmFuc2FjdGlv
bihbc3RvcmVOYW1lXSwgJ3JlYWR3cml0ZScpOwogICAgICAgIGNvbnN0IG9iamVjdFN0b3JlID0g
dHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoc3RvcmVOYW1lKTsKCiAgICAgICAgcmV0dXJuIGF3YWl0
IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHsKICAgICAgICAgIGNvbnN0IHB1dCA9
IG9iamVjdFN0b3JlLnB1dChvYmopOwogICAgICAgICAgcHV0Lm9uc3VjY2VzcyA9IHJlc29sdmU7
CiAgICAgICAgICBwdXQub25lcnJvciA9IHJlamVjdDsKICAgICAgICB9KTsKICAgICAgfQoKICAg
ICAgKGFzeW5jICgpID0+IHsKICAgICAgICAvLyBTRVRVUAogICAgICAgIC8vIE9wZW4gREIgYW5k
IHdyaXRlIGEgZG9jdW1lbnQgd2l0aCB0d28gcHJvcGVydGllcwogICAgICAgIC8vIHRoYXQgYXJl
IHVzZWQgYXMgdGhlIG9iamVjdCdzIGtleQogICAgICAgIGF3YWl0IGRlbGV0ZURiKCk7CiAgICAg
ICAgY29uc3QgZGIgPSBhd2FpdCBvcGVuRGIoKTsKCiAgICAgICAgYXdhaXQgcHV0RGF0YShkYiwg
ewogICAgICAgICAgYmFyOiBuZXcgVWludDhBcnJheShbMSwgMiwgM10pLAogICAgICAgICAgYmF6
OiAxLy9uZXcgVWludDhBcnJheShbNCw1LDZdKSwKICAgICAgICB9KTsKCiAgICAgICAgLy8gUmVh
ZCBLZXlzCiAgICAgICAgY29uc3QgdHJhbnNhY3Rpb24gPSBkYi50cmFuc2FjdGlvbihbc3RvcmVO
YW1lXSwgJ3JlYWR3cml0ZScpOwogICAgICAgIGNvbnN0IG9iamVjdFN0b3JlID0gdHJhbnNhY3Rp
b24ub2JqZWN0U3RvcmUoc3RvcmVOYW1lKTsKICAgICAgICBvYmplY3RTdG9yZS5nZXRBbGxLZXlz
KCkub25zdWNjZXNzID0gZXZ0ID0+IHsKICAgICAgICAgIGNvbnN0IGlkYlZhbGlkS2V5cyA9IGV2
dC50YXJnZXQucmVzdWx0OwogICAgICAgICAgaWRiVmFsaWRLZXlzLmZvckVhY2goaWRiVmFsaWRL
ZXkgPT4gewogICAgICAgICAgICAvLyBVTkVYUEVDVEVEIEJFSEFWSU9SOgogICAgICAgICAgICAv
LyBTaG91bGQgZXF1YWwgbmV3IFVpbnQ4QXJyYXkoWzEsIDIsIDNdKQogICAgICAgICAgICBjb25z
b2xlLmxvZyhuZXcgVWludDhBcnJheShpZGJWYWxpZEtleVswXSkpOwoKICAgICAgICAgICAgLy8g
VGhpcyBoYXMgYW4gdW5leHBlY3RlZCB2YWx1ZQogICAgICAgICAgICBjb25zb2xlLmxvZyhpZGJW
YWxpZEtleVsxXSk7CiAgICAgICAgICB9KTsKICAgICAgICB9OwogICAgICB9KSgpOwogICAgPC9z
Y3JpcHQ+CiAgPC9ib2R5Pgo8L2h0bWw+Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>