aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Engberg <diizzy@FreeBSD.org>2023-09-19 18:23:06 +0000
committerDaniel Engberg <diizzy@FreeBSD.org>2023-09-19 18:23:10 +0000
commit0831c69cb760af830dd3453ef779947f6d65e605 (patch)
tree904396a9a3b8a2293cd7038bb140ca8269318bab
parent1b7b2eab15b64e7a3fd579fbcf9044de19fe2883 (diff)
downloadports-0831c69cb760af830dd3453ef779947f6d65e605.tar.gz
ports-0831c69cb760af830dd3453ef779947f6d65e605.zip
devel/woff2: Improve port and import patches
- Import Coverity Scan patch from Fedora - Disable RPATH - Backport upstream commit 3831354113db8803fb1f5ba196cf0bbb537578dd - Add USES= pathfix and pkgconfig References: https://src.fedoraproject.org/rpms/woff2/blob/rawhide/f/covscan.patch https://github.com/google/woff2/commit/3831354113db8803fb1f5ba196cf0bbb537578dd PR: 273510 Approved by: portmgr (maintainer timeout, 2+ weeks) Sponsored by: Blinkinblox
-rw-r--r--devel/woff2/Makefile9
-rw-r--r--devel/woff2/distinfo4
-rw-r--r--devel/woff2/files/patch-coverity_scan164
3 files changed, 174 insertions, 3 deletions
diff --git a/devel/woff2/Makefile b/devel/woff2/Makefile
index 261f38b9e39f..dd3d4c73e6b0 100644
--- a/devel/woff2/Makefile
+++ b/devel/woff2/Makefile
@@ -1,9 +1,12 @@
PORTNAME= woff2
DISTVERSIONPREFIX= v
DISTVERSION= 1.0.2
-PORTREVISION= 4
+PORTREVISION= 5
CATEGORIES= devel
+PATCH_SITES= https://github.com/google/${PORTNAME}/commit/
+PATCHFILES= 3831354113db8803fb1f5ba196cf0bbb537578dd.patch:-p1
+
MAINTAINER= gnome@FreeBSD.org
COMMENT= Library and converter tools for the WOFF 2.0 web font format
WWW= https://github.com/google/woff2
@@ -13,11 +16,13 @@ LICENSE_FILE= ${WRKSRC}/LICENSE
LIB_DEPENDS= libbrotlidec.so:archivers/brotli
-USES= cmake compiler:c++11-lib
+USES= cmake compiler:c++11-lib pathfix pkgconfig
USE_GITHUB= yes
GH_ACCOUNT= google
USE_LDCONFIG= yes
PLIST_SUB= SHLIBVER=${DISTVERSION}
+CMAKE_ON= CMAKE_SKIP_RPATH
+
.include <bsd.port.mk>
diff --git a/devel/woff2/distinfo b/devel/woff2/distinfo
index ef264719fcff..b056f86d4730 100644
--- a/devel/woff2/distinfo
+++ b/devel/woff2/distinfo
@@ -1,3 +1,5 @@
-TIMESTAMP = 1522147257
+TIMESTAMP = 1693634674
SHA256 (google-woff2-v1.0.2_GH0.tar.gz) = add272bb09e6384a4833ffca4896350fdb16e0ca22df68c0384773c67a175594
SIZE (google-woff2-v1.0.2_GH0.tar.gz) = 38934
+SHA256 (3831354113db8803fb1f5ba196cf0bbb537578dd.patch) = 28a197486d60897b856ea9706c5a136dc9dc284fbc8db71f5a4367700eefef2e
+SIZE (3831354113db8803fb1f5ba196cf0bbb537578dd.patch) = 1519
diff --git a/devel/woff2/files/patch-coverity_scan b/devel/woff2/files/patch-coverity_scan
new file mode 100644
index 000000000000..d72690fa8b83
--- /dev/null
+++ b/devel/woff2/files/patch-coverity_scan
@@ -0,0 +1,164 @@
+diff --git a/src/font.cc b/src/font.cc
+index a45153e..0e9f5bf 100644
+--- src/font.cc
++++ src/font.cc
+@@ -66,7 +66,7 @@ bool ReadTrueTypeFont(Buffer* file, const uint8_t* data, size_t len,
+
+ std::map<uint32_t, uint32_t> intervals;
+ for (uint16_t i = 0; i < font->num_tables; ++i) {
+- Font::Table table;
++ Font::Table table = {};
+ table.flag_byte = 0;
+ table.reuse_of = NULL;
+ if (!file->ReadU32(&table.tag) ||
+@@ -326,7 +326,7 @@ int NumGlyphs(const Font& font) {
+ return 0;
+ }
+ int index_fmt = IndexFormat(font);
+- int loca_record_size = (index_fmt == 0 ? 2 : 4);
++ uint32_t loca_record_size = (index_fmt == 0 ? 2 : 4);
+ if (loca_table->length < loca_record_size) {
+ return 0;
+ }
+diff --git a/src/glyph.h b/src/glyph.h
+index f24056f..e870188 100644
+--- src/glyph.h
++++ src/glyph.h
+@@ -22,17 +22,17 @@ namespace woff2 {
+ // is around.
+ class Glyph {
+ public:
+- Glyph() : instructions_size(0), composite_data_size(0) {}
++ Glyph() {}
+
+ // Bounding box.
+- int16_t x_min;
+- int16_t x_max;
+- int16_t y_min;
+- int16_t y_max;
++ int16_t x_min = 0;
++ int16_t x_max = 0;
++ int16_t y_min = 0;
++ int16_t y_max = 0;
+
+ // Instructions.
+- uint16_t instructions_size;
+- const uint8_t* instructions_data;
++ uint16_t instructions_size = 0;
++ const uint8_t* instructions_data = 0;
+
+ // Data model for simple glyphs.
+ struct Point {
+@@ -43,9 +43,9 @@ class Glyph {
+ std::vector<std::vector<Point> > contours;
+
+ // Data for composite glyphs.
+- const uint8_t* composite_data;
+- uint32_t composite_data_size;
+- bool have_instructions;
++ const uint8_t* composite_data = 0;
++ uint32_t composite_data_size = 0;
++ bool have_instructions = false;
+ };
+
+ // Parses the glyph from the given data. Returns false on parsing failure or
+diff --git a/src/normalize.cc b/src/normalize.cc
+index 6685e08..a819074 100644
+--- src/normalize.cc
++++ src/normalize.cc
+@@ -97,7 +97,7 @@ bool MakeEditableBuffer(Font* font, int tableTag) {
+ table->buffer.resize(sz);
+ uint8_t* buf = &table->buffer[0];
+ memcpy(buf, table->data, table->length);
+- if (PREDICT_FALSE(sz > table->length)) {
++ if (PREDICT_FALSE(static_cast<uint32_t>(sz) > table->length)) {
+ memset(buf + table->length, 0, sz - table->length);
+ }
+ table->data = buf;
+@@ -213,7 +213,6 @@ bool FixChecksums(Font* font) {
+ size_t offset = 8;
+ StoreU32(0, &offset, head_buf);
+ uint32_t file_checksum = 0;
+- uint32_t head_checksum = 0;
+ for (auto& i : font->tables) {
+ Font::Table* table = &i.second;
+ if (table->IsReused()) {
+@@ -221,10 +220,6 @@ bool FixChecksums(Font* font) {
+ }
+ table->checksum = ComputeULongSum(table->data, table->length);
+ file_checksum += table->checksum;
+-
+- if (table->tag == kHeadTableTag) {
+- head_checksum = table->checksum;
+- }
+ }
+
+ file_checksum += ComputeHeaderChecksum(*font);
+diff --git a/src/woff2_dec.cc b/src/woff2_dec.cc
+index 25e18c6..442baa5 100644
+--- src/woff2_dec.cc
++++ src/woff2_dec.cc
+@@ -316,7 +316,7 @@ void ComputeBbox(unsigned int n_points, const Point* points, uint8_t* dst) {
+ offset = Store16(dst, offset, x_min);
+ offset = Store16(dst, offset, y_min);
+ offset = Store16(dst, offset, x_max);
+- offset = Store16(dst, offset, y_max);
++ Store16(dst, offset, y_max);
+ }
+
+
+diff --git a/src/woff2_enc.cc b/src/woff2_enc.cc
+index ec00878..c0598f8 100644
+--- src/woff2_enc.cc
++++ src/woff2_enc.cc
+@@ -331,20 +331,17 @@ bool ConvertTTFToWOFF2(const uint8_t *data, size_t length,
+ return false;
+ }
+
+- Table table;
++ Table table = {};
+ table.tag = src_table.tag;
+ table.flags = src_table.flag_byte;
+ table.src_length = src_table.length;
+ table.transform_length = src_table.length;
+- const uint8_t* transformed_data = src_table.data;
+ const Font::Table* transformed_table =
+ font.FindTable(src_table.tag ^ 0x80808080);
+ if (transformed_table != NULL) {
+ table.flags = transformed_table->flag_byte;
+ table.flags |= kWoff2FlagsTransform;
+ table.transform_length = transformed_table->length;
+- transformed_data = transformed_table->data;
+-
+ }
+ tables.push_back(table);
+ }
+@@ -423,8 +420,6 @@ bool ConvertTTFToWOFF2(const uint8_t *data, size_t length,
+ // for reused tables, only the original has an updated offset
+ uint32_t table_offset =
+ table.IsReused() ? table.reuse_of->offset : table.offset;
+- uint32_t table_length =
+- table.IsReused() ? table.reuse_of->length : table.length;
+ std::pair<uint32_t, uint32_t> tag_offset(table.tag, table_offset);
+ if (index_by_tag_offset.find(tag_offset) == index_by_tag_offset.end()) {
+ #ifdef FONT_COMPRESSION_BIN
+diff --git a/src/woff2_info.cc b/src/woff2_info.cc
+index 2b51adc..8ec9d36 100644
+--- src/woff2_info.cc
++++ src/woff2_info.cc
+@@ -122,13 +122,13 @@ int main(int argc, char **argv) {
+ if (!woff2::Read255UShort(&file, &numFonts)) return 1;
+ printf("CollectionHeader 0x%08x %d fonts\n", version, numFonts);
+
+- for (auto i = 0; i < numFonts; i++) {
++ for (auto i = 0u; i < numFonts; i++) {
+ uint32_t numTables, flavor;
+ if (!woff2::Read255UShort(&file, &numTables)) return 1;
+ if (!file.ReadU32(&flavor)) return 1;
+ printf("CollectionFontEntry %d flavor 0x%08x %d tables\n", i, flavor,
+ numTables);
+- for (auto j = 0; j < numTables; j++) {
++ for (auto j = 0u; j < numTables; j++) {
+ uint32_t table_idx;
+ if (!woff2::Read255UShort(&file, &table_idx)) return 1;
+ if (table_idx >= table_tags.size()) return 1;