fix(audit): Free previous values in EntryBuilder setters

- setTable, setSql, setBefore, setAfter now free old value before setting new
- Prevents memory leak if setter is called multiple times on same builder
This commit is contained in:
reugenio 2025-12-25 22:52:55 +01:00
parent 489a461732
commit 2d334edf96

View file

@ -357,6 +357,8 @@ pub const EntryBuilder = struct {
}
pub fn setTable(self: *Self, table: []const u8) !*Self {
// Liberar valor anterior si existe (evitar leak si se llama 2 veces)
if (self.table) |t| self.allocator.free(t);
self.table = try self.allocator.dupe(u8, table);
return self;
}
@ -367,16 +369,22 @@ pub const EntryBuilder = struct {
}
pub fn setSql(self: *Self, sql: []const u8) !*Self {
// Liberar valor anterior si existe
if (self.sql) |s| self.allocator.free(s);
self.sql = try self.allocator.dupe(u8, sql);
return self;
}
pub fn setBefore(self: *Self, before: []const u8) !*Self {
// Liberar valor anterior si existe
if (self.before) |b| self.allocator.free(b);
self.before = try self.allocator.dupe(u8, before);
return self;
}
pub fn setAfter(self: *Self, after: []const u8) !*Self {
// Liberar valor anterior si existe
if (self.after) |a| self.allocator.free(a);
self.after = try self.allocator.dupe(u8, after);
return self;
}