Commit Graph

1819 Commits

Author SHA1 Message Date
Akira TAGOH 094de3037b Don't call perror() if no changes happens in errno 2016-09-07 11:39:11 +09:00
Alan Coopersmith 0db7552e00 Correct cache version info in doc/fontconfig-user.sgml
Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
2016-08-15 12:06:58 +09:00
Akira TAGOH 6b222c52cd Bump version to 2.12.1 2016-08-05 14:47:02 +09:00
Akira TAGOH 68869149e3 Update libtool revision 2016-08-05 14:45:36 +09:00
Tobias Stoeckmann 7a4a5bd789 Properly validate offsets in cache files.
The cache files are insufficiently validated. Even though the magic
number at the beginning of the file as well as time stamps are checked,
it is not verified if contained offsets are in legal ranges or are
even pointers.

The lack of validation allows an attacker to trigger arbitrary free()
calls, which in turn allows double free attacks and therefore arbitrary
code execution. Due to the conversion from offsets into pointers through
macros, this even allows to circumvent ASLR protections.

This attack vector allows privilege escalation when used with setuid
binaries like fbterm. A user can create ~/.fonts or any other
system-defined user-private font directory, run fc-cache and adjust
cache files in ~/.cache/fontconfig. The execution of setuid binaries will
scan these files and therefore are prone to attacks.

If it's not about code execution, an endless loop can be created by
letting linked lists become circular linked lists.

This patch verifies that:

- The file is not larger than the maximum addressable space, which
  basically only affects 32 bit systems. This allows out of boundary
  access into unallocated memory.
- Offsets are always positive or zero
- Offsets do not point outside file boundaries
- No pointers are allowed in cache files, every "pointer or offset"
  field must be an offset or NULL
- Iterating linked lists must not take longer than the amount of elements
  specified. A violation of this rule can break a possible endless loop.

If one or more of these points are violated, the cache is recreated.
This is current behaviour.

Even though this patch fixes many issues, the use of mmap() shall be
forbidden in setuid binaries. It is impossible to guarantee with these
checks that a malicious user does not change cache files after
verification. This should be handled in a different patch.

Signed-off-by: Tobias Stoeckmann <tobias@stoeckmann.org>
2016-08-05 14:35:05 +09:00
Akira TAGOH 99645ff9ee Bug 96676 - Check range of FcWeightFromOpenType argument
Fix a crash issue when FcWeightFromOpenType() gets a number more than it expects.
2016-07-08 14:18:35 +09:00
Akira TAGOH a34db434c6 Fix some errors related to python3 2016-07-08 11:32:53 +09:00
Akira TAGOH 416cdd9d49 Check python installed in autogen.sh
python is required to build fontconfig from the scratch
2016-07-08 11:14:34 +09:00
Akira TAGOH 5d74251986 Update CaseFolding.txt to Unicode 9.0 2016-06-23 19:05:04 +09:00
Akira TAGOH 0ed1575917 Add --with-default-hinting to configure 2016-06-23 11:18:40 +09:00
Akira TAGOH 505712d1dc Bump version to 2.12.0 2016-06-15 20:10:38 +09:00
Akira TAGOH add5f7329f Remove unused code 2016-06-15 20:10:31 +09:00
Akira TAGOH 600110ee8c Add the static raw data to generate fcblanks.h
https://bugs.freedesktop.org/show_bug.cgi?id=91406
2016-06-09 14:22:36 +09:00
Erik de Castro Lopo ea26c5e9f8 Fix a couple of minor memory leaks
These fixes are needed for the test suite to pass when compiled
with Address Sanitizer.
2016-05-30 10:30:10 +09:00
Akira TAGOH 7441dbec03 Bug 95481 - Build fails on Android due to broken lconv struct 2016-05-27 11:16:09 +09:00
Akira TAGOH 3c2793a32e Correct one for the previous change 2016-05-26 14:22:29 +09:00
Akira TAGOH b6cf1bcaf6 45-latin.conf: Add some Windows fonts to categorize them properly
For Serif:
  Cambria, Constantia, Elephant, MS Serif

For Sans Serif:
  Arial Unicode MS, Britannic, Calibri, Candara, Century Gothic, Corbel,
  Haettenschweiler, MS Sans Serif, Tahoma, Twentieth Century

For Monospace:
  Consolas, Fixedsys, Terminal
2016-05-25 13:01:36 +09:00
Petr Filipsky d15c46d75e Fix memory leak in FcDirCacheLock 2016-05-23 11:09:22 +09:00
Akira TAGOH 9ab7633f2f Bug 95477 - FcAtomicLock fails when SELinux denies link() syscall with EACCES
This is an issue on Android M, which denies non-root users access to link().

Patch from Rodger Combs
2016-05-19 11:11:46 +09:00
Akira TAGOH 560506b3bb Update URL 2016-04-07 12:50:22 +09:00
Akira TAGOH 0e837ae6ec Modernize fc-blanks.py
fc-blanks.py now works on both python2 and 3
2016-04-07 12:01:14 +09:00
Akira TAGOH 13087e38ac Bump version to 2.11.95 2016-04-06 21:05:36 +09:00
Akira TAGOH 0cfa146e6b Update libtool revision 2016-04-06 21:04:42 +09:00
Akira TAGOH d179cbc253 Revert "Workaround another race condition issue"
This reverts commit f44bfad235.
2016-04-06 14:39:15 +09:00
Behdad Esfahbod d05d083e9f [GX] Improve weight mapping
Align the 'wght' axis default value to OS/2 weight value and
adjust accordingly.  This makes both default=1.0 and default=400
models to work.
2016-03-08 17:20:55 -08:00
Behdad Esfahbod d709220d74 Improve OpenType to Fontconfig weight mapping 2016-03-08 17:20:28 -08:00
Behdad Esfahbod 27d61f1ddc [GX] Enumerate all named-instances in TrueType GX fonts 2016-03-08 13:39:05 -08:00
Behdad Esfahbod 00c8408c6a [GX] Support instance weight, width, and style name 2016-03-08 13:39:05 -08:00
Behdad Esfahbod 28f62d1bb8 Call FcFreeTypeQueryFace() from fcdir.c, instead of FcFreeTypeQuery()
Need for upcoming work.  No functional change expected.
2016-03-08 13:39:05 -08:00
Patrick Haller d570a841a2 Optimizations in FcStrSet
Applied optimizations:
- skip duplicate check in FcStrSetAppend for values originating from readdir()
- grow FcStrSet in 64-element bulks for local FcStrSets (FcConfig layout unaltered)

Starting gedit is measured to

                        Unoptimized     Optimized
user[s]                         0,806         0,579
sys[s]                          0,062         0,062
Total Instr Fetch Cost: 1.658.683.750   895.069.820
Cachegrind D Refs:        513.917.619   312.000.436
Cachegrind Dl Misses:       8.605.632     4.954.639
2016-01-12 10:42:40 +09:00
Akira TAGOH 98434b3392 Add hintstyle templates and make hintslight default 2015-12-02 11:31:50 +09:00
Akira TAGOH 04763135d4 Avoid an error message on testing when no fonts.conf installed
This test case doesn't require any config files so no need to ensure loading them.
2015-11-25 11:58:14 +09:00
Akira TAGOH 5886d98c36 Bug 93075 - Possible fix for make check failure on msys/MinGW...
Patch from Christian Fafard
2015-11-24 10:46:34 +09:00
Akira TAGOH 1d87fab8b1 remomve unnecessary code 2015-11-18 14:44:17 +09:00
Akira TAGOH d162a4a83d Fix assertion on 32bit arch 2015-10-16 17:24:22 +09:00
Akira TAGOH 6d6ce028ee Fix compiler warnings on MinGW 2015-10-15 15:53:27 +09:00
Akira TAGOH bd96984e4b Use int64_t instead of long long 2015-10-15 15:51:50 +09:00
Akira TAGOH 7ccde89758 Fix build issue on MinGW 2015-10-13 13:06:54 +09:00
Akira TAGOH a44cc450b5 Use long long to see the same size between LP64 and LLP64 2015-10-13 13:04:33 +09:00
Akira TAGOH c88d9b6242 Fail on make runtime as needed instead of configure if no python installed
python isn't necessarily required to build fontconfig from tarball so that
generated fcblanks.h is available in tarball.

https://bugs.freedesktop.org/show_bug.cgi?id=91663
2015-08-17 16:37:23 +09:00
Akira TAGOH ad9f588050 Fix the broken cache more.
Take a look at the nano second in the mtime to figure out
if the cache needs to be updated if available.
and do the mutex lock between scanning and writing a cache
to avoid the conflict.

Also we don't need to scan directories again after writing
caches. so getting rid of the related code as well.

https://bugs.freedesktop.org/show_bug.cgi?id=69845

and for reference:

https://bugzilla.redhat.com/show_bug.cgi?id=1236034
2015-08-14 17:19:29 +09:00
Behdad Esfahbod 46ec6a52d4 Revert changes made to FcConfigAppFontAddDir() recently
In 32ac7c75e8 the behavior of
FcConfigAppFontAddFile/Dir() were changed to return false
if not fonts were found.  While this is welldefined and useful
for AddFile(), it's quite problematic for AddDir().  For example,
if the directory is empty, is that a failure or success?  Worse,
the false value from AddDir() was being propagated all the way
to FcInit() returning false now.  This only happened upon memory
allocation failure before, and some clients assert that FcInit()
is successful.

With this change, AddDir() is reverted back to what it was.
AddFont() change (which was actually in fcdir.c) from the original
commit is left in.
2015-06-26 17:02:13 -07:00
Akira TAGOH a8096dfa59 Bug 90867 - Memory Leak during error case in fccharset
https://bugs.freedesktop.org/show_bug.cgi?id=90867
2015-06-24 15:46:45 +09:00
Akira TAGOH 0551e1b344 Update CaseFolding.txt to Unicode 8.0 2015-06-18 17:25:02 +09:00
Akira TAGOH 6f929ff37c Fix a memory leak in FcFreeTypeQueryFace 2015-06-17 16:34:29 +09:00
Akira TAGOH 46b2c62faa Add a warning for blank in fonts.conf
and remove the unnecessary code for parsing blanks
2015-06-17 16:29:08 +09:00
Akira TAGOH 33fd436a3e Don't return FcFalse even when no fonts dirs is configured 2015-06-17 16:15:35 +09:00
Akira TAGOH f6d61c9bee mark as private at this moment 2015-06-12 11:30:01 +09:00
Akira TAGOH dbda117142 No need to be public 2015-06-09 11:15:25 +09:00
Akira TAGOH 359ada2b4c Fix a crash when no objects are available after filtering 2015-06-09 11:15:06 +09:00