@@ -285,7 +285,9 @@ let posix_descs_list: (string * LibraryDesc.t) list = LibraryDsl.[
285
285
(" read" , unknown [drop " fd" []; drop " buf" [w]; drop " count" []]);
286
286
(" write" , unknown [drop " fd" []; drop " buf" [r]; drop " count" []]);
287
287
(" recv" , unknown [drop " sockfd" []; drop " buf" [w]; drop " len" []; drop " flags" []]);
288
+ (" recvfrom" , unknown [drop " sockfd" []; drop " buf" [w]; drop " len" []; drop " flags" []; drop " src_addr" [w_deep]; drop " addrlen" [r; w]]);
288
289
(" send" , unknown [drop " sockfd" []; drop " buf" [r]; drop " len" []; drop " flags" []]);
290
+ (" sendto" , unknown [drop " sockfd" []; drop " buf" [r]; drop " len" []; drop " flags" []; drop " dest_addr" [r_deep]; drop " addrlen" []]);
289
291
(" strdup" , unknown [drop " s" [r]]);
290
292
(" strndup" , unknown [drop " s" [r]; drop " n" []]);
291
293
(" syscall" , unknown (drop " number" [] :: VarArgs (drop' [r; w])));
@@ -373,6 +375,18 @@ let posix_descs_list: (string * LibraryDesc.t) list = LibraryDsl.[
373
375
(" uname" , unknown [drop " buf" [w_deep]]);
374
376
(" strcasecmp" , unknown [drop " s1" [r]; drop " s2" [r]]);
375
377
(" strncasecmp" , unknown [drop " s1" [r]; drop " s2" [r]; drop " n" []]);
378
+ (" connect" , unknown [drop " sockfd" []; drop " sockaddr" [r_deep]; drop " addrlen" []]);
379
+ (" bind" , unknown [drop " sockfd" []; drop " sockaddr" [r_deep]; drop " addrlen" []]);
380
+ (" listen" , unknown [drop " sockfd" []; drop " backlog" []]);
381
+ (" select" , unknown [drop " nfds" []; drop " readfds" [r; w]; drop " writefds" [r; w]; drop " exceptfds" [r; w]; drop " timeout" [r; w]]);
382
+ (" accept" , unknown [drop " sockfd" []; drop " addr" [w_deep]; drop " addrlen" [r; w]]);
383
+ (" close" , unknown [drop " fd" []]);
384
+ (" writev" , unknown [drop " fd" []; drop " iov" [r_deep]; drop " iovcnt" []]);
385
+ (" readv" , unknown [drop " fd" []; drop " iov" [w_deep]; drop " iovcnt" []]);
386
+ (" unlink" , unknown [drop " pathname" [r]]);
387
+ (" popen" , unknown [drop " command" [r]; drop " type" [r]]);
388
+ (" stat" , unknown [drop " pathname" [r]; drop " statbuf" [w]]);
389
+ (" statfs" , unknown [drop " path" [r]; drop " buf" [w]]);
376
390
]
377
391
378
392
(* * Pthread functions. *)
@@ -588,6 +602,9 @@ let linux_userspace_descs_list: (string * LibraryDesc.t) list = LibraryDsl.[
588
602
(" fts_open" , unknown [drop " path_argv" [r_deep]; drop " options" []; drop " compar" [s]]); (* TODO: use Call instead of Spawn *)
589
603
(" fts_read" , unknown [drop " ftsp" [r_deep; w_deep]]);
590
604
(" fts_close" , unknown [drop " ftsp" [f_deep]]);
605
+ (" mount" , unknown [drop " source" [r]; drop " target" [r]; drop " filesystemtype" [r]; drop " mountflags" []; drop " data" [r]]);
606
+ (" umount" , unknown [drop " target" [r]]);
607
+ (" umount2" , unknown [drop " target" [r]; drop " flags" []]);
591
608
]
592
609
593
610
let big_kernel_lock = AddrOf (Cil. var (Cilfacade. create_var (makeGlobalVar " [big kernel lock]" intType)))
@@ -1100,7 +1117,6 @@ open Invalidate
1100
1117
* We assume that no known functions that are reachable are executed/spawned. For that we use ThreadCreate above. *)
1101
1118
(* WTF: why are argument numbers 1-indexed (in partition)? *)
1102
1119
let invalidate_actions = [
1103
- " connect" , readsAll; (* safe*)
1104
1120
" __printf_chk" , readsAll;(* safe*)
1105
1121
" printk" , readsAll;(* safe*)
1106
1122
" __mutex_init" , readsAll;(* safe*)
@@ -1118,23 +1134,17 @@ let invalidate_actions = [
1118
1134
" atoi__extinline" , readsAll;(* safe*)
1119
1135
" _IO_getc" , writesAll;(* unsafe*)
1120
1136
" pipe" , writesAll;(* unsafe*)
1121
- " close" , writesAll;(* unsafe*)
1122
1137
" strerror_r" , writesAll;(* unsafe*)
1123
1138
" raise" , writesAll;(* unsafe*)
1124
1139
" _strlen" , readsAll;(* safe*)
1125
1140
" stat__extinline" , writesAllButFirst 1 readsAll;(* drop 1*)
1126
1141
" lstat__extinline" , writesAllButFirst 1 readsAll;(* drop 1*)
1127
- " umount2" , readsAll;(* safe*)
1128
1142
" waitpid" , readsAll;(* safe*)
1129
- " statfs" , writes [1 ;3 ;4 ];(* keep [1;3;4]*)
1130
- " mount" , readsAll;(* safe*)
1131
1143
" __open_alias" , readsAll;(* safe*)
1132
1144
" __open_2" , readsAll;(* safe*)
1133
1145
" ioctl" , writesAll;(* unsafe*)
1134
1146
" fstat__extinline" , writesAll;(* unsafe*)
1135
- " umount" , readsAll;(* safe*)
1136
1147
" scandir" , writes [1 ;3 ;4 ];(* keep [1;3;4]*)
1137
- " unlink" , readsAll;(* safe*)
1138
1148
" sigwait" , writesAllButFirst 1 readsAll;(* drop 1*)
1139
1149
" bindtextdomain" , readsAll;(* safe*)
1140
1150
" textdomain" , readsAll;(* safe*)
@@ -1149,11 +1159,9 @@ let invalidate_actions = [
1149
1159
" svctcp_create" , readsAll;(* safe*)
1150
1160
" clntudp_bufcreate" , writesAll;(* unsafe*)
1151
1161
" authunix_create_default" , readsAll;(* safe*)
1152
- " writev" , readsAll;(* safe*)
1153
1162
" clnt_broadcast" , writesAll;(* unsafe*)
1154
1163
" clnt_sperrno" , readsAll;(* safe*)
1155
1164
" pmap_unset" , writesAll;(* unsafe*)
1156
- " bind" , readsAll;(* safe*)
1157
1165
" svcudp_create" , readsAll;(* safe*)
1158
1166
" svc_register" , writesAll;(* unsafe*)
1159
1167
" svc_run" , writesAll;(* unsafe*)
@@ -1162,27 +1170,20 @@ let invalidate_actions = [
1162
1170
" __builtin___vsnprintf_chk" , writesAllButFirst 3 readsAll; (* drop 3*)
1163
1171
" __error" , readsAll; (* safe*)
1164
1172
" __maskrune" , writesAll; (* unsafe*)
1165
- " listen" , readsAll; (* safe*)
1166
- " select" , writes [1 ;5 ]; (* keep [1;5]*)
1167
- " accept" , writesAll; (* keep [1]*)
1168
1173
" times" , writesAll; (* unsafe*)
1169
1174
" timespec_get" , writes [1 ];
1170
1175
" __tolower" , readsAll; (* safe*)
1171
1176
" signal" , writesAll; (* unsafe*)
1172
- " popen" , readsAll; (* safe*)
1173
1177
" BF_cfb64_encrypt" , writes [1 ;3 ;4 ;5 ]; (* keep [1;3;4,5]*)
1174
1178
" BZ2_bzBuffToBuffDecompress" , writes [3 ;4 ]; (* keep [3;4]*)
1175
1179
" uncompress" , writes [3 ;4 ]; (* keep [3;4]*)
1176
- " stat" , writes [2 ]; (* keep [1]*)
1177
1180
" __xstat" , writes [3 ]; (* keep [1]*)
1178
1181
" __lxstat" , writes [3 ]; (* keep [1]*)
1179
1182
" remove" , readsAll;
1180
1183
" BZ2_bzBuffToBuffCompress" , writes [3 ;4 ]; (* keep [3;4]*)
1181
1184
" compress2" , writes [3 ]; (* keep [3]*)
1182
1185
" __toupper" , readsAll; (* safe*)
1183
1186
" BF_set_key" , writes [3 ]; (* keep [3]*)
1184
- " sendto" , writes [2 ;4 ]; (* keep [2;4]*)
1185
- " recvfrom" , writes [4 ;5 ]; (* keep [4;5]*)
1186
1187
" PL_NewHashTable" , readsAll; (* safe*)
1187
1188
" assert_failed" , readsAll; (* safe*)
1188
1189
" munmap" , readsAll;(* safe*)
0 commit comments