ref: c48bf37bda6445eaac9e869cf5adef76c74fc079
parent: 662b344c23125a19abcd503c267699afeeabdf7d
author: David Turner <[email protected]>
date: Thu Jan 3 12:08:20 EST 2002
* builds/unix/ftsystem.c (FT_New_Stream): added a fix to ensure that all FreeType input streams are closed in child processes of a "fork" on Unix systems. This is important to avoid (potential) access control issues..
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2002-01-03 Keith Packard <[email protected]>
+
+ * builds/unix/ftsystem.c (FT_New_Stream): added a fix to ensure that
+ all FreeType input streams are closed in child processes of a "fork"
+ on Unix systems. This is important to avoid (potential) access
+ control issues..
+
+
2002-01-03 David Turner <[email protected]>
* src/type1/t1objs.c (T1_Face_Init): fixed a bug that crashed the
--- a/builds/unix/ftsystem.c
+++ b/builds/unix/ftsystem.c
@@ -223,6 +223,19 @@
return FT_Err_Cannot_Open_Resource;
}
+ /* here, we ensure that a "fork" will _not_ duplicate */
+ /* our opened input streams on Unix. This is critical */
+ /* since it would avoid some (possible) access control */
+ /* issues and clean up the kernel file table a bit. */
+ /* */
+#ifdef F_SETFD
+# ifdef FD_CLOEXEC
+ ret = fcntl ( file, F_SETFD, FD_CLOEXEC);
+# else
+ ret = fcntl ( file, F_SETFD, 1);
+# endif /* FD_CLOEXEC */
+#endif /* F_SETFD */
+
if ( fstat( file, &stat_buf ) < 0 )
{
FT_ERROR(( "FT_New_Stream:" ));