From ba69bc535ef26d5c0f2c2d79ee787ff3d3ed8411 Mon Sep 17 00:00:00 2001 From: Simon Knott Date: Thu, 12 Dec 2024 12:08:29 +0100 Subject: [PATCH] align parser with spec --- packages/playwright-core/src/utils/tar.ts | 15 +++++---------- 1 file changed, 5 insertions(+), 10 deletions(-) diff --git a/packages/playwright-core/src/utils/tar.ts b/packages/playwright-core/src/utils/tar.ts index f9598db46e..c373253e9f 100644 --- a/packages/playwright-core/src/utils/tar.ts +++ b/packages/playwright-core/src/utils/tar.ts @@ -15,7 +15,6 @@ */ import fs from 'fs'; import { Writable, once } from 'stream'; -import path from 'path'; import assert from 'assert'; enum TarType { @@ -45,19 +44,15 @@ class TarEntry { if (header.length < 512) throw new Error('Invalid header: ' + header.toString('utf8')); - this.name = header.toString('utf8', 0, 100).replace(/\0/g, ''); - const prefixField = header.toString('utf8', 345, 500).replace(/\0/g, ''); - if (prefixField) - this.name = path.join(prefixField, this.name); - this.name = this.name.replace(/^\/+/, ''); + this.name = header.toString('utf8', 0, 100).replace(/\0/g, '').replace(/^\/+/, ''); - this.size = parseInt(header.toString('utf8', 124, 136).trim(), 8); + this.size = parseInt(header.toString('ascii', 124, 136).trim(), 8); this.type = parseInt(header.toString('ascii', 156, 157), 10) as TarType; - this.mode = parseInt(header.toString('utf8', 100, 108).trim(), 8) || 0o644; + this.mode = parseInt(header.toString('ascii', 100, 108).trim(), 8) || 0o644; this.linkname = header.toString('utf8', 157, 257).replace(/\0/g, ''); - this.uid = parseInt(header.toString('utf8', 108, 116).trim(), 8); - this.gid = parseInt(header.toString('utf8', 116, 124).trim(), 8); + this.uid = parseInt(header.toString('ascii', 108, 116).trim(), 8); + this.gid = parseInt(header.toString('ascii', 116, 124).trim(), 8); } async writeToDisk(outputPath: (path: string) => string) {