authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2024-08-05 17:05:01-07:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2024-08-07 00:48:32-07:00
logbfc2ee03e5b9fa74b047f41ff78d671f53fc7c79
tree8afae8bd921f8dc1624fcc6354ece09bdffb77f5
parent38227e92898a049412ddaab6c8596218d32db650

fuzzer web ui: resolve cwd in sources.tar

because the wasm code needs to string match against debug information

1 files changed, 13 insertions(+), 1 deletions(-)

lib/std/Build/Fuzz/WebServer.zig+13-1
......@@ -485,6 +485,8 @@ fn serveSourcesTar(ws: *WebServer, request: *std.http.Server.Request) !void {
485485 };
486486 std.mem.sortUnstable(Build.Cache.Path, deduped_paths, SortContext{}, SortContext.lessThan);
487487
488 var cwd_cache: ?[]const u8 = null;
489
488490 for (deduped_paths) |joined_path| {
489491 var file = joined_path.root_dir.handle.openFile(joined_path.sub_path, .{}) catch |err| {
490492 log.err("failed to open {}: {s}", .{ joined_path, @errorName(err) });
......@@ -506,7 +508,10 @@ fn serveSourcesTar(ws: *WebServer, request: *std.http.Server.Request) !void {
506508
507509 var file_header = std.tar.output.Header.init();
508510 file_header.typeflag = .regular;
509 try file_header.setPath(joined_path.root_dir.path orelse ".", joined_path.sub_path);
511 try file_header.setPath(
512 joined_path.root_dir.path orelse try memoizedCwd(arena, &cwd_cache),
513 joined_path.sub_path,
514 );
510515 try file_header.setSize(stat.size);
511516 try file_header.updateChecksum();
512517 try w.writeAll(std.mem.asBytes(&file_header));
......@@ -519,6 +524,13 @@ fn serveSourcesTar(ws: *WebServer, request: *std.http.Server.Request) !void {
519524 try response.end();
520525}
521526
527fn memoizedCwd(arena: Allocator, opt_ptr: *?[]const u8) ![]const u8 {
528 if (opt_ptr.*) |cached| return cached;
529 const result = try std.process.getCwdAlloc(arena);
530 opt_ptr.* = result;
531 return result;
532}
533
522534const cache_control_header: std.http.Header = .{
523535 .name = "cache-control",
524536 .value = "max-age=0, must-revalidate",