commit a5897feadc4be73b0ffd8458556c47117bd24d03 Author: Ethan A Merritt Date: Tue Mar 25 22:51:54 2025 -0700 hpgl: font name parsing overruns the string by one char if no comma is present in the font name. E.g. set term pcl set title "Title" font "sans" # no comma in font name plot x Bug 2781 diff --git term/hpgl.trm term/hpgl.trm index 8e763d174..d432f7e39 100644 --- term/hpgl.trm +++ term/hpgl.trm @@ -1653,28 +1653,22 @@ TERM_PUBLIC int HPGL2_set_font(const char *font) { char name[MAX_ID_LEN + 1]; - int sep; - int int_size; - double size; + char *sep; + double size = HPGL2_point_size; if (font == NULL) font = ""; - sep = strcspn(font, ","); strncpy(name, font, sizeof(name)-1); - if (sep < sizeof(name)) - name[sep] = NUL; - -/* determine font size, use default from options if invalid */ - int_size = 0; - /* FIXME: use strtod instead */ - sscanf(&(font[sep + 1]), "%d", &int_size); - if (int_size > 0) - size = int_size; - else - size = HPGL2_point_size; - + /* determine font size, use default from options if invalid */ + sep = strchr(font, ','); + if (sep) { + double req_size = strtod(sep+1, NULL); + if (req_size > 0) + size = req_size; + *sep = '\0'; + } return HPGL2_set_font_size(name, size); }