Skip to content

Commit 4c9904a

Browse files
authored
Merge pull request #1167 from goblint/libfuns-zlib-lzma
Add `zlib` and `liblzma` functions used in `The Silver Searcher` to `LibraryFunctions`
2 parents 1feb75e + 684cfa8 commit 4c9904a

File tree

2 files changed

+21
-2
lines changed

2 files changed

+21
-2
lines changed

src/analyses/libraryFunctions.ml

+18-1
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,8 @@ let c_descs_list: (string * LibraryDesc.t) list = LibraryDsl.[
102102
("vprintf", unknown [drop "format" [r]; drop "vlist" [r_deep]]); (* TODO: what to do with a va_list type? is r_deep correct? *)
103103
("vfprintf", unknown [drop "stream" [r_deep; w_deep]; drop "format" [r]; drop "vlist" [r_deep]]); (* TODO: what to do with a va_list type? is r_deep correct? *)
104104
("vsprintf", unknown [drop "buffer" [w]; drop "format" [r]; drop "vlist" [r_deep]]); (* TODO: what to do with a va_list type? is r_deep correct? *)
105+
("vasprintf", unknown [drop "strp" [w]; drop "format" [r]; drop "ap" [r_deep]]); (* TODO: what to do with a va_list type? is r_deep correct? *)
106+
("vsnprintf", unknown [drop "str" [w]; drop "size" []; drop "format" [r]; drop "ap" [r_deep]]); (* TODO: what to do with a va_list type? is r_deep correct? *)
105107
("mktime", unknown [drop "tm" [r;w]]);
106108
("ctime", unknown ~attrs:[ThreadUnsafe] [drop "rm" [r]]);
107109
("clearerr", unknown [drop "stream" [w]]);
@@ -288,6 +290,7 @@ let posix_descs_list: (string * LibraryDesc.t) list = LibraryDsl.[
288290
("ftw", unknown ~attrs:[ThreadUnsafe] [drop "dirpath" [r]; drop "fn" [s]; drop "nopenfd" []]); (* TODO: use Call instead of Spawn *)
289291
("nftw", unknown ~attrs:[ThreadUnsafe] [drop "dirpath" [r]; drop "fn" [s]; drop "nopenfd" []; drop "flags" []]); (* TODO: use Call instead of Spawn *)
290292
("fnmatch", unknown [drop "pattern" [r]; drop "string" [r]; drop "flags" []]);
293+
("realpath", unknown [drop "path" [r]; drop "resolved_path" [w]]);
291294
]
292295

293296
(** Pthread functions. *)
@@ -824,6 +827,19 @@ let pcre_descs_list: (string * LibraryDesc.t) list = LibraryDsl.[
824827
("pcre_version", unknown []);
825828
]
826829

830+
let zlib_descs_list: (string * LibraryDesc.t) list = LibraryDsl.[
831+
("inflate", unknown [drop "strm" [r_deep; w_deep]; drop "flush" []]);
832+
("inflateInit2", unknown [drop "strm" [r_deep; w_deep]; drop "windowBits" []]);
833+
("inflateInit2_", unknown [drop "strm" [r_deep; w_deep]; drop "windowBits" []; drop "version" [r]; drop "stream_size" []]);
834+
("inflateEnd", unknown [drop "strm" [f_deep]]);
835+
]
836+
837+
let liblzma_descs_list: (string * LibraryDesc.t) list = LibraryDsl.[
838+
("lzma_code", unknown [drop "strm" [r_deep; w_deep]; drop "action" []]);
839+
("lzma_auto_decoder", unknown [drop "strm" [r_deep; w_deep]; drop "memlimit" []; drop "flags" []]);
840+
("lzma_end", unknown [drop "strm" [r_deep; w_deep; f_deep]]);
841+
]
842+
827843
let libraries = Hashtbl.of_list [
828844
("c", c_descs_list @ math_descs_list);
829845
("posix", posix_descs_list);
@@ -837,6 +853,8 @@ let libraries = Hashtbl.of_list [
837853
("ncurses", ncurses_descs_list);
838854
("zstd", zstd_descs_list);
839855
("pcre", pcre_descs_list);
856+
("zlib", zlib_descs_list);
857+
("liblzma", liblzma_descs_list);
840858
]
841859

842860
let activated_library_descs: (string, LibraryDesc.t) Hashtbl.t ResettableLazy.t =
@@ -1071,7 +1089,6 @@ let invalidate_actions = [
10711089
"usleep", readsAll;
10721090
"svc_run", writesAll;(*unsafe*)
10731091
"dup", readsAll; (*safe*)
1074-
"vsnprintf", writesAllButFirst 3 readsAll; (*drop 3*)
10751092
"__builtin___vsnprintf", writesAllButFirst 3 readsAll; (*drop 3*)
10761093
"__builtin___vsnprintf_chk", writesAllButFirst 3 readsAll; (*drop 3*)
10771094
"strcasecmp", readsAll; (*safe*)

src/util/options.schema.json

+3-1
Original file line numberDiff line numberDiff line change
@@ -1285,7 +1285,9 @@
12851285
"sv-comp",
12861286
"ncurses",
12871287
"zstd",
1288-
"pcre"
1288+
"pcre",
1289+
"zlib",
1290+
"liblzma"
12891291
]
12901292
},
12911293
"default": [

0 commit comments

Comments
 (0)