[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
master d81df9e449: Fix copying font names around on Haiku
From: |
Po Lu |
Subject: |
master d81df9e449: Fix copying font names around on Haiku |
Date: |
Wed, 23 Mar 2022 21:51:33 -0400 (EDT) |
branch: master
commit d81df9e44933d5b4d386e29d953055dfc029e742
Author: Po Lu <luangruo@yahoo.com>
Commit: Po Lu <luangruo@yahoo.com>
Fix copying font names around on Haiku
* src/haiku_font_support.cc (font_style_to_flags)
(haiku_font_fill_pattern, BFont_open_pattern)
(BFont_populate_fixed_family, BFont_populate_plain_family):
* src/haiku_support.cc (be_get_version_string):
* src/haikufont.c (haikufont_spec_or_entity_to_pattern): Stop
assuming patterns were allocated by xzalloc.
---
src/haiku_font_support.cc | 6 ++++++
src/haiku_support.cc | 7 ++++++-
src/haikufont.c | 2 ++
3 files changed, 14 insertions(+), 1 deletion(-)
diff --git a/src/haiku_font_support.cc b/src/haiku_font_support.cc
index 549c54d864..fd41ee71f0 100644
--- a/src/haiku_font_support.cc
+++ b/src/haiku_font_support.cc
@@ -289,6 +289,7 @@ font_style_to_flags (char *st, struct haiku_font_pattern
*pattern)
pattern->specified |= FSPEC_STYLE;
std::strncpy ((char *) &pattern->style, st,
sizeof pattern->style - 1);
+ pattern->style[sizeof pattern->style - 1] = '\0';
}
free (style);
@@ -411,6 +412,7 @@ haiku_font_fill_pattern (struct haiku_font_pattern *pattern,
pattern->specified |= FSPEC_FAMILY;
std::strncpy (pattern->family, family,
sizeof pattern->family - 1);
+ pattern->family[sizeof pattern->family - 1] = '\0';
pattern->specified |= FSPEC_SPACING;
pattern->mono_spacing_p = flags & B_IS_FIXED;
}
@@ -534,6 +536,8 @@ BFont_open_pattern (struct haiku_font_pattern *pat, void
**font, float size)
if (!(pat->specified & FSPEC_FAMILY))
return 1;
strncpy (name, pat->family, sizeof name - 1);
+ name[sizeof name - 1] = '\0';
+
sty_count = count_font_styles (name);
if (!sty_count &&
@@ -603,6 +607,7 @@ BFont_populate_fixed_family (struct haiku_font_pattern *ptn)
ptn->specified |= FSPEC_FAMILY;
strncpy (ptn->family, f, sizeof ptn->family - 1);
+ ptn->family[sizeof ptn->family - 1] = '\0';
}
void
@@ -614,6 +619,7 @@ BFont_populate_plain_family (struct haiku_font_pattern *ptn)
ptn->specified |= FSPEC_FAMILY;
strncpy (ptn->family, f, sizeof ptn->family - 1);
+ ptn->family[sizeof ptn->family - 1] = '\0';
}
int
diff --git a/src/haiku_support.cc b/src/haiku_support.cc
index 24009c0ef6..5ad3c7c794 100644
--- a/src/haiku_support.cc
+++ b/src/haiku_support.cc
@@ -3395,6 +3395,8 @@ void
be_get_version_string (char *version, int len)
{
std::strncpy (version, "Unknown Haiku release", len - 1);
+ version[len - 1] = '\0';
+
BPath path;
if (find_directory (B_BEOS_LIB_DIRECTORY, &path) == B_OK)
{
@@ -3408,7 +3410,10 @@ be_get_version_string (char *version, int len)
&& appFileInfo.GetVersionInfo (&versionInfo,
B_APP_VERSION_KIND) == B_OK
&& versionInfo.short_info[0] != '\0')
- std::strncpy (version, versionInfo.short_info, len - 1);
+ {
+ std::strncpy (version, versionInfo.short_info, len - 1);
+ version[len - 1] = '\0';
+ }
}
}
diff --git a/src/haikufont.c b/src/haikufont.c
index 5099285f10..b9f6dc2fe8 100644
--- a/src/haikufont.c
+++ b/src/haikufont.c
@@ -437,6 +437,7 @@ haikufont_spec_or_entity_to_pattern (Lisp_Object ent,
strncpy ((char *) &ptn->style,
SSDATA (SYMBOL_NAME (tem)),
sizeof ptn->style - 1);
+ ptn->style[sizeof ptn->style - 1] = '\0';
}
tem = FONT_SLANT_SYMBOLIC (ent);
@@ -475,6 +476,7 @@ haikufont_spec_or_entity_to_pattern (Lisp_Object ent,
strncpy ((char *) &ptn->family,
SSDATA (SYMBOL_NAME (tem)),
sizeof ptn->family - 1);
+ ptn->family[sizeof ptn->family - 1] = '\0';
}
tem = assq_no_quit (QCscript, AREF (ent, FONT_EXTRA_INDEX));
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- master d81df9e449: Fix copying font names around on Haiku,
Po Lu <=