From 3cd587ea0edb03122bdac298eea97ac9f79afd07 Mon Sep 17 00:00:00 2001 From: Vincent Rischmann Date: Sun, 26 Dec 2021 16:30:39 +0100 Subject: add some fuzzing capability --- fuzz/main.zig | 45 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 fuzz/main.zig (limited to 'fuzz/main.zig') diff --git a/fuzz/main.zig b/fuzz/main.zig new file mode 100644 index 0000000..482cbe0 --- /dev/null +++ b/fuzz/main.zig @@ -0,0 +1,45 @@ +const std = @import("std"); +const sqlite = @import("sqlite"); + +pub export fn main() callconv(.C) void { + zigMain() catch unreachable; +} + +pub fn zigMain() !void { + var gpa = std.heap.GeneralPurposeAllocator(.{}){}; + defer std.debug.assert(gpa.deinit() == false); + const allocator = gpa.allocator(); + + // Read the data from stdin + const stdin = std.io.getStdIn(); + const data = try stdin.readToEndAlloc(allocator, std.math.maxInt(usize)); + defer allocator.free(data); + + var db = try sqlite.Db.init(.{ + .mode = .Memory, + .open_flags = .{ + .write = true, + .create = true, + }, + }); + defer db.deinit(); + + try db.exec("CREATE TABLE test(id integer primary key, name text, data blob)", .{}, .{}); + + db.execDynamic(data, .{}, .{}) catch |err| switch (err) { + error.SQLiteError => return, + else => return err, + }; + + db.execDynamic( + "INSERT INTO test(name, data) VALUES($name, $data)", + .{}, + .{ + .name = data, + .data = data, + }, + ) catch |err| switch (err) { + error.SQLiteError => return, + else => return err, + }; +} -- cgit v1.2.3