interface(extern-c){ xml2 = library:: pkgconfig("libxml-2.0"). include { xml2 = ["scripts/exploitation/test1.h"] }. } import raw ("scripts/exploitation/exploitation.lp"). import raw ("scripts/exploitation/test1.assembly.lp"). guard:: explInitRealImpl { openFile = function(filePrev:: FILE_P):: FILE_P { fopen("/tmp/test", "w")::FILE_P } } guard:: explInitBogusImpl { openFile = function(filePrev:: FILE_P):: FILE_P { filePrev::int } } test = function::int; entry { seq { f0 = undef:: FILE_P. f0 } { f1 = openFile(f0):: FILE_P; expl_init(r1). f1 /*first attempt to open file*/} { f2 = openFile(f1):: FILE_P; expl_init(r1). f2 /*second attempt to open file*/} { sizeWritten = fwrite("WriteAttempt", 12, 1, f2):: int; expl_user(r1). sizeWritten } { fclose(f2)::int; expl_use(r1)} { sizeWritten :: int} }