ceda368a6dea

delete getLicense: no caller anywhere in src/ or test/ (the Tab detail pane uses packageMeta), and it returned a slice into result.stdout no caller could ever free correctly (NINA-021)

time
2026-07-02 14:17 UTC · 3 months ago
machine
koh2
agent
claude-sonnet-5
session
fable audit fix — api.zig
parent
d55b75fe962b
1 file src/api.zig+0 −28
src/api.zig+0 −28
@@ -141,34 +141,6 @@141141     return packages.toOwnedSlice(gpa);142142 }143143 144-pub fn getLicense(gpa: std.mem.Allocator, io: std.Io, attr: []const u8) ?[]const u8 {145-    const expr = std.fmt.allocPrint(gpa, "nixpkgs#{s}.meta.license.shortName", .{attr}) catch return null;146-    defer gpa.free(expr);147-148-    const result = std.process.run(gpa, io, .{149-        .argv = &.{ "nix", "eval", "--raw", expr },150-    }) catch return null;151-    defer gpa.free(result.stderr);152-153-    switch (result.term) {154-        .exited => |code| if (code != 0) {155-            gpa.free(result.stdout);156-            return null;157-        },158-        else => {159-            gpa.free(result.stdout);160-            return null;161-        },162-    }163-164-    const license = std.mem.trim(u8, result.stdout, " \t\n\r");165-    if (license.len == 0) {166-        gpa.free(result.stdout);167-        return null;168-    }169-    return license;170-}171-172144 pub const PkgMeta = struct {173145     homepage: []const u8 = "",174146     license: []const u8 = "",

view file