$OpenBSD: patch-gtk_PlatGTK_cxx,v 1.1.1.1 2003/08/14 18:24:30 sturm Exp $ --- gtk/PlatGTK.cxx.orig 2003-08-13 16:46:23.000000000 +1000 +++ gtk/PlatGTK.cxx 2003-08-13 17:01:38.000000000 +1000 @@ -332,7 +332,7 @@ static void GenerateFontSpecStrings(cons if (strchr(fontName, '-')) { char tmp[300]; char *d1 = NULL, *d2 = NULL, *d3 = NULL; - strncpy(tmp, fontName, sizeof(tmp) - 1); + strlcpy(tmp, fontName, sizeof(tmp)); d1 = strchr(tmp, '-'); // we know the first dash exists d2 = strchr(d1 + 1, '-'); @@ -343,25 +343,25 @@ static void GenerateFontSpecStrings(cons *d2 = '\0'; foundary[0] = '-'; foundary[1] = '\0'; - strncpy(faceName, tmp, foundary_len - 1); - strncpy(charset, d2 + 1, charset_len - 1); + strlcpy(faceName, tmp, foundary_len); + strlcpy(charset, d2 + 1, charset_len); } else if (d2) { // fontface-isoxxx-x *d1 = '\0'; - strcpy(foundary, "-*-"); - strncpy(faceName, tmp, faceName_len - 1); - strncpy(charset, d1 + 1, charset_len - 1); + strlcpy(foundary, "-*-", foundary_len); + strlcpy(faceName, tmp, faceName_len); + strlcpy(charset, d1 + 1, charset_len); } else { // foundary-fontface foundary[0] = '-'; foundary[1] = '\0'; - strncpy(faceName, tmp, faceName_len - 1); - strncpy(charset, CharacterSetName(characterSet), charset_len - 1); + strlcpy(faceName, tmp, faceName_len); + strlcpy(charset, CharacterSetName(characterSet), charset_len); } } else { - strncpy(foundary, "-*-", foundary_len); - strncpy(faceName, fontName, faceName_len - 1); - strncpy(charset, CharacterSetName(characterSet), charset_len - 1); + strlcpy(foundary, "-*-", foundary_len); + strlcpy(faceName, fontName, faceName_len); + strlcpy(charset, CharacterSetName(characterSet), charset_len); } } @@ -371,7 +371,7 @@ static void SetLogFont(LOGFONT &lf, cons lf.bold = bold; lf.italic = italic; lf.characterSet = characterSet; - strncpy(lf.faceName, faceName, sizeof(lf.faceName) - 1); + strlcpy(lf.faceName, faceName, sizeof(lf.faceName)); } /** @@ -533,9 +533,8 @@ FontID FontCached::CreateNewFont(const c // eg. adobe-courier-iso10646-1,*-courier-iso10646-1,*-*-*-* if (strchr(fontName, ',')) { // build a fontspec and use gdk_fontset_load - int remaining = sizeof(fontset); char fontNameCopy[1024]; - strncpy(fontNameCopy, fontName, sizeof(fontNameCopy) - 1); + strlcpy(fontNameCopy, fontName, sizeof(fontNameCopy)); char *fn = fontNameCopy; char *fp = strchr(fn, ','); for (;;) { @@ -566,8 +565,7 @@ FontID FontCached::CreateNewFont(const c // we are doing italic, add an oblique font // to the list if (italic && fontset[0] == '\0') { - strncat(fontset, fontspec, remaining - 1); - remaining -= strlen(fontset); + strlcat(fontset, fontspec, sizeof(fontset)); snprintf(fontspec, sizeof(fontspec) - 1, @@ -578,8 +576,7 @@ FontID FontCached::CreateNewFont(const c charset); } - strncat(fontset, fontspec, remaining - 1); - remaining -= strlen(fontset); + strlcat(fontset, fontspec, sizeof(fontset)); if (!fp) break; @@ -1967,8 +1964,7 @@ void ListBoxX::GetValue(int n, char *val break; } if (text && len > 0) { - strncpy(value, text, len); - value[len - 1] = '\0'; + strlcpy(value, text, len); } else { value[0] = '\0'; } @@ -2197,7 +2193,7 @@ void Platform::DebugPrintf(const char *f char buffer[2000]; va_list pArguments; va_start(pArguments, format); - vsprintf(buffer, format, pArguments); + vsnprintf(buffer, sizeof(buffer), format, pArguments); va_end(pArguments); Platform::DebugDisplay(buffer); } @@ -2217,8 +2213,7 @@ bool Platform::ShowAssertionPopUps(bool void Platform::Assert(const char *c, const char *file, int line) { char buffer[2000]; - sprintf(buffer, "Assertion [%s] failed at %s %d", c, file, line); - strcat(buffer, "\r\n"); + snprintf(buffer, sizeof(buffer), "Assertion [%s] failed at %s %d\r\n", c, file, line); Platform::DebugDisplay(buffer); abort(); }