]> git.ipfire.org Git - thirdparty/valgrind.git/commitdiff
FreeBSD syscall: improve closefrom to make it similar to cloase_range
authorPaul Floyd <pjfloyd@wanadoo.fr>
Wed, 13 Mar 2024 20:34:08 +0000 (21:34 +0100)
committerPaul Floyd <pjfloyd@wanadoo.fr>
Wed, 13 Mar 2024 20:34:08 +0000 (21:34 +0100)
Was missing ML_(record_fd_close) calls for the fds.

coregrind/m_syswrap/syswrap-freebsd.c

index 12b3d071d8f396b214b7fe47fa5214634b19c633..bf4d7e58184efe11370ea7165518227b96759ecc 100644 (file)
@@ -5635,13 +5635,31 @@ PRE(sys_closefrom)
     * all of the host files like the log
     */
 
-   for (int i = ARG1; i < VG_(fd_soft_limit); ++i) {
-      VG_(close)(i);
+   for (int fd = ARG1; fd < VG_(fd_hard_limit); ++fd) {
+      if ((fd != 2/*stderr*/ || VG_(debugLog_getLevel)() == 0)
+          && fd != VG_(log_output_sink).fd
+          && fd != VG_(xml_output_sink).fd)
+         VG_(close)(fd);
    }
 
    SET_STATUS_Success(0);
 }
 
+POST(sys_closefrom)
+{
+   unsigned int fd;
+   unsigned int last = VG_(fd_hard_limit);
+
+   if (!VG_(clo_track_fds))
+      return;
+
+   for (fd = ARG1; fd <= last; fd++)
+      if ((fd != 2/*stderr*/ || VG_(debugLog_getLevel)() == 0)
+          && fd != VG_(log_output_sink).fd
+          && fd != VG_(xml_output_sink).fd)
+         ML_(record_fd_close)(tid, fd);
+}
+
 // SYS___semctl   510
 // int semctl(int semid, int semnum, int cmd, ...);
 // int __semctl(int semid, int semnum, int cmd, _Inout_ union semun *arg);
@@ -7725,7 +7743,7 @@ const SyscallTableEntry ML_(syscall_table)[] = {
    BSDX_(__NR_jail_get,         sys_jail_get),          // 506
    BSDX_(__NR_jail_set,         sys_jail_set),          // 507
    BSDX_(__NR_jail_remove,      sys_jail_remove),       // 508
-   BSDX_(__NR_closefrom,        sys_closefrom),         // 509
+   BSDXY(__NR_closefrom,        sys_closefrom),         // 509
    BSDXY(__NR___semctl,         sys___semctl),          // 510
    BSDXY(__NR_msgctl,           sys_msgctl),            // 511
    BSDXY(__NR_shmctl,           sys_shmctl),            // 512