ref: 009ce1aba8f9aed1703cd44538230263e01262bc
parent: 46b5c4ac313b074bedd683a0f1fb25ad2b5e9664
author: Werner Lemberg <[email protected]>
date: Sat Aug 28 03:59:53 EDT 2004
* src/otlayout/otlayout.h: Add copyright. (OTL_INVALID_OFFSET): Removed. * src/otlayout/otlgdef.h: Include otlayout.h. Comment out inclusion of otltable.h. * src/otlayout/otlgpos.c (otl_gpos_lookup4_validate): Fix call to otl_base_array_validate. (otl_liga_mark2_validate): Fix `for' loop. * src/otlayout/otlgsub.c (otl_ligature_validate): Check `glyph_id', not components array. * src/otlcommn.c (otl_lookup_get_count, otl_feature_get_count): Comment out. (otl_lookup_list_get_count, otl_feature_list_get_count): Activate. (otl_feature_list_validate, otl_gsubgpos_get_lookup_count): s/otl_lookup_get_count/otl_lookup_list_get_count/. (otl_script_list_validate): s/otl_feature_get_count/otl_feature_list_get_count/. (otl_script_validate): Call otl_lang_validate for default language. * src/otlayout/otlcommn.h: Updated.
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,29 @@
+2004-08-27 Werner Lemberg <[email protected]>
+
+ * src/otlayout/otlayout.h: Add copyright.
+ (OTL_INVALID_OFFSET): Removed.
+
+ * src/otlayout/otlgdef.h: Include otlayout.h.
+ Comment out inclusion of otltable.h.
+
+ * src/otlayout/otlgpos.c (otl_gpos_lookup4_validate): Fix call
+ to otl_base_array_validate.
+ (otl_liga_mark2_validate): Fix `for' loop.
+
+ * src/otlayout/otlgsub.c (otl_ligature_validate): Check `glyph_id',
+ not components array.
+
+ * src/otlcommn.c (otl_lookup_get_count, otl_feature_get_count):
+ Comment out.
+ (otl_lookup_list_get_count, otl_feature_list_get_count): Activate.
+ (otl_feature_list_validate, otl_gsubgpos_get_lookup_count):
+ s/otl_lookup_get_count/otl_lookup_list_get_count/.
+ (otl_script_list_validate):
+ s/otl_feature_get_count/otl_feature_list_get_count/.
+ (otl_script_validate): Call otl_lang_validate for default language.
+
+ * src/otlayout/otlcommn.h: Updated.
+
2004-08-16 Werner Lemberg <[email protected]>
* src/otlayout/otlgpos.c (otl_gpos_lookup1_validate,
--- a/src/otlayout/otlayout.h
+++ b/src/otlayout/otlayout.h
@@ -1,3 +1,21 @@
+/***************************************************************************/
+/* */
+/* otlayout.h */
+/* */
+/* OpenType layout support (specification only). */
+/* */
+/* Copyright 2002, 2004 by */
+/* David Turner, Robert Wilhelm, and Werner Lemberg. */
+/* */
+/* This file is part of the FreeType project, and may only be used, */
+/* modified, and distributed under the terms of the FreeType project */
+/* license, LICENSE.TXT. By continuing to use, modify, or distribute */
+/* this file you indicate that you have read the license and */
+/* understand and accept it fully. */
+/* */
+/***************************************************************************/
+
+
#ifndef __OT_LAYOUT_H__
#define __OT_LAYOUT_H__
@@ -200,7 +218,6 @@
#define OTL_INVALID(e) otl_validator_error( valid, e )
#define OTL_INVALID_TOO_SHORT OTL_INVALID( OTL_Err_InvalidSize )
-#define OTL_INVALID_OFFSET OTL_INVALID( OTL_Err_InvalidOffset )
#define OTL_INVALID_DATA OTL_INVALID( OTL_Err_InvalidData )
#define OTL_INVALID_FORMAT OTL_INVALID( OTL_Err_InvalidFormat )
@@ -214,3 +231,6 @@
OTL_END_HEADER
#endif /* __OT_LAYOUT_H__ */
+
+
+/* END */
--- a/src/otlayout/otlcommn.c
+++ b/src/otlayout/otlcommn.c
@@ -512,6 +512,7 @@
}
+#if 0
OTL_LOCALDEF( OTL_UInt )
otl_lookup_get_count( OTL_Bytes table )
{
@@ -520,6 +521,7 @@
return OTL_PEEK_USHORT( p );
}
+#endif
#if 0
@@ -575,7 +577,6 @@
}
-#if 0
OTL_LOCALDEF( OTL_UInt )
otl_lookup_list_get_count( OTL_Bytes table )
{
@@ -584,7 +585,6 @@
return OTL_PEEK_USHORT( p );
}
-#endif
#if 0
@@ -671,6 +671,7 @@
}
+#if 0
OTL_LOCALDEF( OTL_UInt )
otl_feature_get_count( OTL_Bytes table )
{
@@ -679,6 +680,7 @@
return OTL_PEEK_USHORT( p );
}
+#endif
#if 0
@@ -730,7 +732,7 @@
num_features = OTL_NEXT_USHORT( p );
OTL_CHECK( 2 * num_features );
- lookup_count = otl_lookup_get_count( lookups );
+ lookup_count = otl_lookup_list_get_count( lookups );
/* scan feature records */
for ( ; num_features > 0; num_features-- )
@@ -743,7 +745,6 @@
}
-#if 0
OTL_LOCALDEF( OTL_UInt )
otl_feature_list_get_count( OTL_Bytes table )
{
@@ -752,7 +753,6 @@
return OTL_PEEK_USHORT( p );
}
-#endif
#if 0
@@ -906,10 +906,7 @@
num_langs = OTL_NEXT_USHORT( p );
if ( default_lang != 0 )
- {
- if ( table + default_lang >= valid->limit )
- OTL_INVALID_OFFSET;
- }
+ otl_lang_validate( table + default_lang, feature_count, valid );
OTL_CHECK( num_langs * 6 );
@@ -936,7 +933,7 @@
num_scripts = OTL_NEXT_USHORT( p );
OTL_CHECK( num_scripts * 6 );
- feature_count = otl_feature_get_count( features );
+ feature_count = otl_feature_list_get_count( features );
/* scan script records */
for ( ; num_scripts > 0; num_scripts-- )
@@ -963,7 +960,7 @@
OTL_Bytes p = table + 8;
- return otl_lookup_get_count( table + OTL_PEEK_USHORT( p ) );
+ return otl_lookup_list_get_count( table + OTL_PEEK_USHORT( p ) );
}
--- a/src/otlayout/otlcommn.h
+++ b/src/otlayout/otlcommn.h
@@ -128,9 +128,11 @@
OTL_UInt glyph_count,
OTL_Validator valid );
+#if 0
/* return number of sub-tables in a lookup */
OTL_LOCAL( OTL_UInt )
otl_lookup_get_count( OTL_Bytes table );
+#endif
#if 0
/* return lookup sub-table */
@@ -156,11 +158,9 @@
OTL_UInt glyph_count,
OTL_Validator valid );
-#if 0
/* return number of lookups in list */
OTL_LOCAL( OTL_UInt )
otl_lookup_list_get_count( OTL_Bytes table );
-#endif
#if 0
/* return a given lookup from a list */
@@ -200,9 +200,11 @@
OTL_UInt lookup_count,
OTL_Validator valid );
+#if 0
/* return feature's lookup count */
OTL_LOCAL( OTL_UInt )
otl_feature_get_count( OTL_Bytes table );
+#endif
#if 0
/* get several lookups indices from a feature. returns the number of */
@@ -230,11 +232,9 @@
OTL_Bytes lookups,
OTL_Validator valid );
-#if 0
/* return number of features in list */
OTL_LOCAL( OTL_UInt )
otl_feature_list_get_count( OTL_Bytes table );
-#endif
#if 0
/* return a given feature from a list */
--- a/src/otlayout/otlgdef.h
+++ b/src/otlayout/otlgdef.h
@@ -19,7 +19,11 @@
#ifndef __OTLGDEF_H__
#define __OTLGDEF_H__
+#include "otlayout.h"
+
+#if 0
#include "otltable.h"
+#endif
OTL_BEGIN_HEADER
--- a/src/otlayout/otlgpos.c
+++ b/src/otlayout/otlgpos.c
@@ -477,7 +477,7 @@
otl_coverage_validate( table + base_coverage, valid );
otl_mark_array_validate( table + mark_array, valid );
- otl_base_array_validate( table, num_classes, valid );
+ otl_base_array_validate( table + base_array, num_classes, valid );
}
break;
@@ -514,7 +514,7 @@
/* scan component records */
for ( ; num_components > 0; num_components-- )
/* scan ligature anchor records */
- for ( count = class_count; class_count > 0; class_count-- )
+ for ( count = class_count; count > 0; count-- )
{
OTL_UInt offset = OTL_NEXT_USHORT( p );
--- a/src/otlayout/otlgsub.c
+++ b/src/otlayout/otlgsub.c
@@ -484,7 +484,10 @@
OTL_CHECK( 4 );
- glyph_id = OTL_NEXT_USHORT( p );
+ glyph_id = OTL_NEXT_USHORT( p );
+ if ( glyph_id >= glyph_count )
+ OTL_INVALID_DATA;
+
num_components = OTL_NEXT_USHORT( p );
if ( num_components == 0 )
@@ -493,10 +496,6 @@
num_components--;
OTL_CHECK( num_components * 2 );
-
- for ( ; num_components > 0; num_components-- )
- if ( OTL_NEXT_USHORT( p ) >= glyph_count )
- OTL_INVALID_DATA;
}