diff options
| author | 2021-12-26 16:30:39 +0100 | |
|---|---|---|
| committer | 2021-12-26 18:12:55 +0100 | |
| commit | 3cd587ea0edb03122bdac298eea97ac9f79afd07 (patch) | |
| tree | d77600b33b28cf333b925d5579433c382c57c15d /fuzz/main.zig | |
| parent | gitignore: ignore coredumps (diff) | |
| download | zig-sqlite-3cd587ea0edb03122bdac298eea97ac9f79afd07.tar.gz zig-sqlite-3cd587ea0edb03122bdac298eea97ac9f79afd07.tar.xz zig-sqlite-3cd587ea0edb03122bdac298eea97ac9f79afd07.zip | |
add some fuzzing capability
Diffstat (limited to 'fuzz/main.zig')
| -rw-r--r-- | fuzz/main.zig | 45 |
1 files changed, 45 insertions, 0 deletions
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 @@ | |||
| 1 | const std = @import("std"); | ||
| 2 | const sqlite = @import("sqlite"); | ||
| 3 | |||
| 4 | pub export fn main() callconv(.C) void { | ||
| 5 | zigMain() catch unreachable; | ||
| 6 | } | ||
| 7 | |||
| 8 | pub fn zigMain() !void { | ||
| 9 | var gpa = std.heap.GeneralPurposeAllocator(.{}){}; | ||
| 10 | defer std.debug.assert(gpa.deinit() == false); | ||
| 11 | const allocator = gpa.allocator(); | ||
| 12 | |||
| 13 | // Read the data from stdin | ||
| 14 | const stdin = std.io.getStdIn(); | ||
| 15 | const data = try stdin.readToEndAlloc(allocator, std.math.maxInt(usize)); | ||
| 16 | defer allocator.free(data); | ||
| 17 | |||
| 18 | var db = try sqlite.Db.init(.{ | ||
| 19 | .mode = .Memory, | ||
| 20 | .open_flags = .{ | ||
| 21 | .write = true, | ||
| 22 | .create = true, | ||
| 23 | }, | ||
| 24 | }); | ||
| 25 | defer db.deinit(); | ||
| 26 | |||
| 27 | try db.exec("CREATE TABLE test(id integer primary key, name text, data blob)", .{}, .{}); | ||
| 28 | |||
| 29 | db.execDynamic(data, .{}, .{}) catch |err| switch (err) { | ||
| 30 | error.SQLiteError => return, | ||
| 31 | else => return err, | ||
| 32 | }; | ||
| 33 | |||
| 34 | db.execDynamic( | ||
| 35 | "INSERT INTO test(name, data) VALUES($name, $data)", | ||
| 36 | .{}, | ||
| 37 | .{ | ||
| 38 | .name = data, | ||
| 39 | .data = data, | ||
| 40 | }, | ||
| 41 | ) catch |err| switch (err) { | ||
| 42 | error.SQLiteError => return, | ||
| 43 | else => return err, | ||
| 44 | }; | ||
| 45 | } | ||