authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2025-02-24 17:39:01-08:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2025-02-26 11:42:03-08:00
log9763dd2901069f80dbdaae7c6b8004fbe1cf1b26
treef3ef33bff6124d19db87c4ab65230321d09f04c4
parent76e8b297b1f0c6013d71e9ae670cb4006b3e4b76

Package.Manifest: enforce maximum version string length of 32


1 files changed, 4 insertions(+), 0 deletions(-)

src/Package/Manifest.zig+4
...@@ -10,6 +10,7 @@ const Package = @import("../Package.zig");...@@ -10,6 +10,7 @@ const Package = @import("../Package.zig");
10pub const max_bytes = 10 * 1024 * 1024;10pub const max_bytes = 10 * 1024 * 1024;
11pub const basename = "build.zig.zon";11pub const basename = "build.zig.zon";
12pub const max_name_len = 32;12pub const max_name_len = 32;
13pub const max_version_len = 32;
1314
14pub const Dependency = struct {15pub const Dependency = struct {
15 location: Location,16 location: Location,
...@@ -185,6 +186,9 @@ const Parse = struct {...@@ -185,6 +186,9 @@ const Parse = struct {
185 } else if (mem.eql(u8, field_name, "version")) {186 } else if (mem.eql(u8, field_name, "version")) {
186 p.version_node = field_init;187 p.version_node = field_init;
187 const version_text = try parseString(p, field_init);188 const version_text = try parseString(p, field_init);
189 if (version_text.len > max_version_len) {
190 try appendError(p, main_tokens[field_init], "version string length {d} exceeds maximum of {d}", .{ version_text.len, max_version_len });
191 }
188 p.version = std.SemanticVersion.parse(version_text) catch |err| v: {192 p.version = std.SemanticVersion.parse(version_text) catch |err| v: {
189 try appendError(p, main_tokens[field_init], "unable to parse semantic version: {s}", .{@errorName(err)});193 try appendError(p, main_tokens[field_init], "unable to parse semantic version: {s}", .{@errorName(err)});
190 break :v undefined;194 break :v undefined;