parent
58bdd29619
commit
986e35979e
|
@ -1,3 +1,10 @@
|
||||||
|
2006-01-19 Andreas Schwab <schwab@suse.de>
|
||||||
|
reviewed by: plam
|
||||||
|
|
||||||
|
* src/fcpat.c (FcStrNeededBytes):
|
||||||
|
|
||||||
|
Fix for unaligned memory accesses.
|
||||||
|
|
||||||
2006-01-18 Mike Fabian <mfabian@suse.de>
|
2006-01-18 Mike Fabian <mfabian@suse.de>
|
||||||
reviewed by: plam
|
reviewed by: plam
|
||||||
|
|
||||||
|
@ -6,7 +13,7 @@
|
||||||
Properly order the FcConfigAddFontDir and FcConfigNormalizeFontDir
|
Properly order the FcConfigAddFontDir and FcConfigNormalizeFontDir
|
||||||
calls to avoid crashes.
|
calls to avoid crashes.
|
||||||
|
|
||||||
2006-01-14 Patirck Lam <plam@mit.edu>
|
2006-01-14 Patrick Lam <plam@mit.edu>
|
||||||
* src/fccache.c (FcDirCacheConsume):
|
* src/fccache.c (FcDirCacheConsume):
|
||||||
|
|
||||||
Fix segfault when consuming zero-length caches in fc-cat
|
Fix segfault when consuming zero-length caches in fc-cat
|
||||||
|
|
12
src/fcpat.c
12
src/fcpat.c
|
@ -1888,6 +1888,7 @@ FcStrNeededBytes (const FcChar8 * s)
|
||||||
struct objectBucket **p;
|
struct objectBucket **p;
|
||||||
struct objectBucket *b;
|
struct objectBucket *b;
|
||||||
int size;
|
int size;
|
||||||
|
FcChar8 *const null = 0;
|
||||||
|
|
||||||
for (p = &FcStrBuckets[hash % OBJECT_HASH_SIZE]; (b = *p); p = &(b->next))
|
for (p = &FcStrBuckets[hash % OBJECT_HASH_SIZE]; (b = *p); p = &(b->next))
|
||||||
if (b->hash == hash && !strcmp ((char *)s, (char *) (b + 1)))
|
if (b->hash == hash && !strcmp ((char *)s, (char *) (b + 1)))
|
||||||
|
@ -1905,7 +1906,8 @@ FcStrNeededBytes (const FcChar8 * s)
|
||||||
* incorrect to replace the with a memset, because the C
|
* incorrect to replace the with a memset, because the C
|
||||||
* specification doesn't guarantee that the null pointer is
|
* specification doesn't guarantee that the null pointer is
|
||||||
* the same as the zero bit pattern. */
|
* the same as the zero bit pattern. */
|
||||||
*(char **)((char *) (b + 1) + strlen((char *)s) + 1) = 0;
|
/* Misaligned pointers are not guaranteed to work, either! */
|
||||||
|
memcpy (((char *) (b + 1) + strlen((char *)s) + 1), &null, sizeof (null));
|
||||||
*p = b;
|
*p = b;
|
||||||
|
|
||||||
fcstr_count += strlen((char *)s) + 1;
|
fcstr_count += strlen((char *)s) + 1;
|
||||||
|
@ -1968,13 +1970,15 @@ FcStrSerialize (int bank, const FcChar8 * s)
|
||||||
for (p = &FcStrBuckets[hash % OBJECT_HASH_SIZE]; (b = *p); p = &(b->next))
|
for (p = &FcStrBuckets[hash % OBJECT_HASH_SIZE]; (b = *p); p = &(b->next))
|
||||||
if (b->hash == hash && !strcmp ((char *)s, (char *) (b + 1)))
|
if (b->hash == hash && !strcmp ((char *)s, (char *) (b + 1)))
|
||||||
{
|
{
|
||||||
FcChar8 * t = *(FcChar8 **)(((FcChar8 *)(b + 1)) + strlen ((char *)s) + 1);
|
FcChar8 * t;
|
||||||
|
memcpy (&t, ((FcChar8 *)(b + 1)) + strlen ((char *)s) + 1, sizeof (FcChar8 *));
|
||||||
if (!t)
|
if (!t)
|
||||||
{
|
{
|
||||||
strcpy((char *)(static_strs[bi] + fcstr_ptr), (char *)s);
|
strcpy((char *)(static_strs[bi] + fcstr_ptr), (char *)s);
|
||||||
*(FcChar8 **)((FcChar8 *) (b + 1) + strlen((char *)s) + 1) = (static_strs[bi] + fcstr_ptr);
|
t = static_strs[bi] + fcstr_ptr;
|
||||||
|
memcpy ((FcChar8 *) (b + 1) + strlen((char *)s) + 1, &t, sizeof (FcChar8 *));
|
||||||
fcstr_ptr += strlen((char *)s) + 1;
|
fcstr_ptr += strlen((char *)s) + 1;
|
||||||
t = *(FcChar8 **)(((FcChar8 *)(b + 1)) + strlen ((char *)s) + 1);
|
memcpy (&t, ((FcChar8 *)(b + 1)) + strlen ((char *)s) + 1, sizeof (FcChar8 *));
|
||||||
}
|
}
|
||||||
return t;
|
return t;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue