Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package gnuplot for openSUSE:Factory checked 
in at 2025-05-20 09:31:09
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/gnuplot (Old)
 and      /work/SRC/openSUSE:Factory/.gnuplot.new.30101 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "gnuplot"

Tue May 20 09:31:09 2025 rev:98 rq:1277115 version:6.0.2

Changes:
--------
--- /work/SRC/openSUSE:Factory/gnuplot/gnuplot-doc.changes      2025-01-09 
15:05:20.563075109 +0100
+++ /work/SRC/openSUSE:Factory/.gnuplot.new.30101/gnuplot-doc.changes   
2025-05-20 09:31:15.596127463 +0200
@@ -1,0 +2,18 @@
+Mon May 12 12:14:33 UTC 2025 - Dr. Werner Fink <wer...@suse.de>
+
+- Add patches
+  * fix4bug1240325.patch - boo#1240325: CVE-2025-31176: segmentation fault on 
plot3d_points
+  * fix4bug1240326.patch - boo#1240326: CVE-2025-31177: heap-buffer overflow 
on utf8_copy_one
+  * fix4bug1240327.patch - boo#1240327: CVE-2025-31178: segmentation fault on 
GetAnnotateString
+  * fix4bug1240328.patch - boo#1240328: CVE-2025-31179: segmentation fault on 
xstrftime
+  * fix4bug1240329.patch - boo#1240329: CVE-2025-31180: segmentation fault on 
CANVAS_text
+  * fix4bug1240330.patch - boo#1240330: CVE-2025-31181: segmentation fault on 
X11_graphics
+  * fix4bug1241684.patch - boo#1241684: CVE-2025-3359: segmentation fault via 
IO_str_init_static_internal function
+- Add a check section and we use a dump terminal
+
+-------------------------------------------------------------------
+Tue Feb 18 13:09:58 UTC 2025 - Dr. Werner Fink <wer...@suse.de>
+
+- Use openspecfun only for opensuse builds
+
+-------------------------------------------------------------------
--- /work/SRC/openSUSE:Factory/gnuplot/gnuplot.changes  2025-02-19 
15:59:10.057621836 +0100
+++ /work/SRC/openSUSE:Factory/.gnuplot.new.30101/gnuplot.changes       
2025-05-20 09:31:15.668130464 +0200
@@ -1,0 +2,13 @@
+Mon May 12 12:14:33 UTC 2025 - Dr. Werner Fink <wer...@suse.de>
+
+- Add patches
+  * fix4bug1240325.patch - boo#1240325: CVE-2025-31176: segmentation fault on 
plot3d_points
+  * fix4bug1240326.patch - boo#1240326: CVE-2025-31177: heap-buffer overflow 
on utf8_copy_one
+  * fix4bug1240327.patch - boo#1240327: CVE-2025-31178: segmentation fault on 
GetAnnotateString
+  * fix4bug1240328.patch - boo#1240328: CVE-2025-31179: segmentation fault on 
xstrftime
+  * fix4bug1240329.patch - boo#1240329: CVE-2025-31180: segmentation fault on 
CANVAS_text
+  * fix4bug1240330.patch - boo#1240330: CVE-2025-31181: segmentation fault on 
X11_graphics
+  * fix4bug1241684.patch - boo#1241684: CVE-2025-3359: segmentation fault via 
IO_str_init_static_internal function
+- Add a check section and we use a dump terminal
+
+-------------------------------------------------------------------

New:
----
  fix4bug1240325.patch
  fix4bug1240326.patch
  fix4bug1240327.patch
  fix4bug1240328.patch
  fix4bug1240329.patch
  fix4bug1240330.patch
  fix4bug1241684.patch

BETA DEBUG BEGIN:
  New:/work/SRC/openSUSE:Factory/.gnuplot.new.30101/gnuplot-doc.changes-- Add 
patches
/work/SRC/openSUSE:Factory/.gnuplot.new.30101/gnuplot-doc.changes:  * 
fix4bug1240325.patch - boo#1240325: CVE-2025-31176: segmentation fault on 
plot3d_points
/work/SRC/openSUSE:Factory/.gnuplot.new.30101/gnuplot-doc.changes-  * 
fix4bug1240326.patch - boo#1240326: CVE-2025-31177: heap-buffer overflow on 
utf8_copy_one
--
/work/SRC/openSUSE:Factory/.gnuplot.new.30101/gnuplot.changes-- Add patches
/work/SRC/openSUSE:Factory/.gnuplot.new.30101/gnuplot.changes:  * 
fix4bug1240325.patch - boo#1240325: CVE-2025-31176: segmentation fault on 
plot3d_points
/work/SRC/openSUSE:Factory/.gnuplot.new.30101/gnuplot.changes-  * 
fix4bug1240326.patch - boo#1240326: CVE-2025-31177: heap-buffer overflow on 
utf8_copy_one
  New:/work/SRC/openSUSE:Factory/.gnuplot.new.30101/gnuplot-doc.changes-  * 
fix4bug1240325.patch - boo#1240325: CVE-2025-31176: segmentation fault on 
plot3d_points
/work/SRC/openSUSE:Factory/.gnuplot.new.30101/gnuplot-doc.changes:  * 
fix4bug1240326.patch - boo#1240326: CVE-2025-31177: heap-buffer overflow on 
utf8_copy_one
/work/SRC/openSUSE:Factory/.gnuplot.new.30101/gnuplot-doc.changes-  * 
fix4bug1240327.patch - boo#1240327: CVE-2025-31178: segmentation fault on 
GetAnnotateString
--
/work/SRC/openSUSE:Factory/.gnuplot.new.30101/gnuplot.changes-  * 
fix4bug1240325.patch - boo#1240325: CVE-2025-31176: segmentation fault on 
plot3d_points
/work/SRC/openSUSE:Factory/.gnuplot.new.30101/gnuplot.changes:  * 
fix4bug1240326.patch - boo#1240326: CVE-2025-31177: heap-buffer overflow on 
utf8_copy_one
/work/SRC/openSUSE:Factory/.gnuplot.new.30101/gnuplot.changes-  * 
fix4bug1240327.patch - boo#1240327: CVE-2025-31178: segmentation fault on 
GetAnnotateString
  New:/work/SRC/openSUSE:Factory/.gnuplot.new.30101/gnuplot-doc.changes-  * 
fix4bug1240326.patch - boo#1240326: CVE-2025-31177: heap-buffer overflow on 
utf8_copy_one
/work/SRC/openSUSE:Factory/.gnuplot.new.30101/gnuplot-doc.changes:  * 
fix4bug1240327.patch - boo#1240327: CVE-2025-31178: segmentation fault on 
GetAnnotateString
/work/SRC/openSUSE:Factory/.gnuplot.new.30101/gnuplot-doc.changes-  * 
fix4bug1240328.patch - boo#1240328: CVE-2025-31179: segmentation fault on 
xstrftime
--
/work/SRC/openSUSE:Factory/.gnuplot.new.30101/gnuplot.changes-  * 
fix4bug1240326.patch - boo#1240326: CVE-2025-31177: heap-buffer overflow on 
utf8_copy_one
/work/SRC/openSUSE:Factory/.gnuplot.new.30101/gnuplot.changes:  * 
fix4bug1240327.patch - boo#1240327: CVE-2025-31178: segmentation fault on 
GetAnnotateString
/work/SRC/openSUSE:Factory/.gnuplot.new.30101/gnuplot.changes-  * 
fix4bug1240328.patch - boo#1240328: CVE-2025-31179: segmentation fault on 
xstrftime
  New:/work/SRC/openSUSE:Factory/.gnuplot.new.30101/gnuplot-doc.changes-  * 
fix4bug1240327.patch - boo#1240327: CVE-2025-31178: segmentation fault on 
GetAnnotateString
/work/SRC/openSUSE:Factory/.gnuplot.new.30101/gnuplot-doc.changes:  * 
fix4bug1240328.patch - boo#1240328: CVE-2025-31179: segmentation fault on 
xstrftime
/work/SRC/openSUSE:Factory/.gnuplot.new.30101/gnuplot-doc.changes-  * 
fix4bug1240329.patch - boo#1240329: CVE-2025-31180: segmentation fault on 
CANVAS_text
--
/work/SRC/openSUSE:Factory/.gnuplot.new.30101/gnuplot.changes-  * 
fix4bug1240327.patch - boo#1240327: CVE-2025-31178: segmentation fault on 
GetAnnotateString
/work/SRC/openSUSE:Factory/.gnuplot.new.30101/gnuplot.changes:  * 
fix4bug1240328.patch - boo#1240328: CVE-2025-31179: segmentation fault on 
xstrftime
/work/SRC/openSUSE:Factory/.gnuplot.new.30101/gnuplot.changes-  * 
fix4bug1240329.patch - boo#1240329: CVE-2025-31180: segmentation fault on 
CANVAS_text
  New:/work/SRC/openSUSE:Factory/.gnuplot.new.30101/gnuplot-doc.changes-  * 
fix4bug1240328.patch - boo#1240328: CVE-2025-31179: segmentation fault on 
xstrftime
/work/SRC/openSUSE:Factory/.gnuplot.new.30101/gnuplot-doc.changes:  * 
fix4bug1240329.patch - boo#1240329: CVE-2025-31180: segmentation fault on 
CANVAS_text
/work/SRC/openSUSE:Factory/.gnuplot.new.30101/gnuplot-doc.changes-  * 
fix4bug1240330.patch - boo#1240330: CVE-2025-31181: segmentation fault on 
X11_graphics
--
/work/SRC/openSUSE:Factory/.gnuplot.new.30101/gnuplot.changes-  * 
fix4bug1240328.patch - boo#1240328: CVE-2025-31179: segmentation fault on 
xstrftime
/work/SRC/openSUSE:Factory/.gnuplot.new.30101/gnuplot.changes:  * 
fix4bug1240329.patch - boo#1240329: CVE-2025-31180: segmentation fault on 
CANVAS_text
/work/SRC/openSUSE:Factory/.gnuplot.new.30101/gnuplot.changes-  * 
fix4bug1240330.patch - boo#1240330: CVE-2025-31181: segmentation fault on 
X11_graphics
  New:/work/SRC/openSUSE:Factory/.gnuplot.new.30101/gnuplot-doc.changes-  * 
fix4bug1240329.patch - boo#1240329: CVE-2025-31180: segmentation fault on 
CANVAS_text
/work/SRC/openSUSE:Factory/.gnuplot.new.30101/gnuplot-doc.changes:  * 
fix4bug1240330.patch - boo#1240330: CVE-2025-31181: segmentation fault on 
X11_graphics
/work/SRC/openSUSE:Factory/.gnuplot.new.30101/gnuplot-doc.changes-  * 
fix4bug1241684.patch - boo#1241684: CVE-2025-3359: segmentation fault via 
IO_str_init_static_internal function
--
/work/SRC/openSUSE:Factory/.gnuplot.new.30101/gnuplot.changes-  * 
fix4bug1240329.patch - boo#1240329: CVE-2025-31180: segmentation fault on 
CANVAS_text
/work/SRC/openSUSE:Factory/.gnuplot.new.30101/gnuplot.changes:  * 
fix4bug1240330.patch - boo#1240330: CVE-2025-31181: segmentation fault on 
X11_graphics
/work/SRC/openSUSE:Factory/.gnuplot.new.30101/gnuplot.changes-  * 
fix4bug1241684.patch - boo#1241684: CVE-2025-3359: segmentation fault via 
IO_str_init_static_internal function
  New:/work/SRC/openSUSE:Factory/.gnuplot.new.30101/gnuplot-doc.changes-  * 
fix4bug1240330.patch - boo#1240330: CVE-2025-31181: segmentation fault on 
X11_graphics
/work/SRC/openSUSE:Factory/.gnuplot.new.30101/gnuplot-doc.changes:  * 
fix4bug1241684.patch - boo#1241684: CVE-2025-3359: segmentation fault via 
IO_str_init_static_internal function
/work/SRC/openSUSE:Factory/.gnuplot.new.30101/gnuplot-doc.changes-- Add a check 
section and we use a dump terminal
--
/work/SRC/openSUSE:Factory/.gnuplot.new.30101/gnuplot.changes-  * 
fix4bug1240330.patch - boo#1240330: CVE-2025-31181: segmentation fault on 
X11_graphics
/work/SRC/openSUSE:Factory/.gnuplot.new.30101/gnuplot.changes:  * 
fix4bug1241684.patch - boo#1241684: CVE-2025-3359: segmentation fault via 
IO_str_init_static_internal function
/work/SRC/openSUSE:Factory/.gnuplot.new.30101/gnuplot.changes-- Add a check 
section and we use a dump terminal
BETA DEBUG END:

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ gnuplot.spec ++++++
--- /var/tmp/diff_new_pack.s8sdeK/_old  2025-05-20 09:31:16.484164466 +0200
+++ /var/tmp/diff_new_pack.s8sdeK/_new  2025-05-20 09:31:16.484164466 +0200
@@ -115,6 +115,13 @@
 Patch5:         gnuplot-wx3.diff
 Patch6:         gnuplot-QtCore-PIC.dif
 Patch7:         gnuplot-PIE.patch
+Patch25:        fix4bug1240325.patch
+Patch26:        fix4bug1240326.patch
+Patch27:        fix4bug1240327.patch
+Patch28:        fix4bug1240328.patch
+Patch29:        fix4bug1240329.patch
+Patch30:        fix4bug1240330.patch
+Patch84:        fix4bug1241684.patch
 %define _x11lib     %{_libdir}
 %define _x11data    %{_datadir}/X11
 %define _x11inc     %{_includedir}/X11
@@ -150,6 +157,13 @@
 %patch -P5 -p1 -b .w3x
 %patch -P6 -p0 -b .pic
 %patch -P7 -p1 -b .pie
+%patch -P25 -p0 -b .p25
+%patch -P26 -p0 -b .p26
+%patch -P27 -p0 -b .p27
+%patch -P28 -p0 -b .p28
+%patch -P29 -p0 -b .p29
+%patch -P30 -p0 -b .p30
+%patch -P84 -p0 -b .p84
 
 %build
 autoreconf -fi
@@ -275,6 +289,11 @@
     %fdupes %{buildroot}/%{_docdir}
 %endif
 
+%if "%{flavor}" == ""
+%check
+GNUTERM=dumb make check
+%endif
+
 %if "%{flavor}" == "doc"
 %post
 %install_info --info-dir=.%{_infodir} .%{_infodir}/%{sname}.info.gz

++++++ fix4bug1240325.patch ++++++
commit b456a3ef618f55a20b3071d336cb20514274f1d4
Author: Ethan A Merritt <merr...@u.washington.edu>
Date:   Tue Mar 11 12:31:54 2025 -0700

    guard against invalid read from plot->labels
    
    If a plot style uses points and the point chosen has PT_CHARACTER
    then the program looks for a possible font in plot->labels->font.
    These plot styles contain a flag bit HAS_POINT (gp_types.h).
    The program makes sure to initialize plot->labels for these styles.
    However a problem arises when a plot style that doesn't use points
    nevertheless triggers this same attempted font lookup by using a
    linetype that happens to use pointtype PT_CHARACTER.
    I think this is only possible with 'splot' but I added parallel
    checks for 'plot' as well.
    
    Bug 2776

diff --git src/boundary.c src/boundary.c
index e787de3f1..941635f7a 100644
--- src/boundary.c
+++ src/boundary.c
@@ -1468,7 +1468,7 @@ do_key_sample_point(
            (*t->pointsize)(pointsize);
        if (on_page(xl + key_point_offset, yl)) {
            if (this_plot->lp_properties.p_type == PT_CHARACTER) {
-               if (this_plot->labels->textcolor.type != TC_DEFAULT)
+               if (this_plot->labels && this_plot->labels->textcolor.type != 
TC_DEFAULT)
                    apply_pm3dcolor(&(this_plot->labels->textcolor));
                (*t->put_text) (xl + key_point_offset, yl, 
                                this_plot->lp_properties.p_char);
diff --git src/graph3d.c src/graph3d.c
index bda614b7a..74ae8d558 100644
--- src/graph3d.c
+++ src/graph3d.c
@@ -2164,7 +2164,7 @@ plot3d_points(struct surface_points *plot)
     /* Set whatever we can that applies to every point in the loop */
     if (plot->lp_properties.p_type == PT_CHARACTER) {
        ignore_enhanced(TRUE);
-       if (plot->labels->font && plot->labels->font[0])
+       if (plot->labels && plot->labels->font && plot->labels->font[0])
            (*t->set_font) (plot->labels->font);
        (*t->justify_text) (CENTRE);
     }
@@ -2260,7 +2260,7 @@ plot3d_points(struct surface_points *plot)
 
     /* Return to initial state */
     if (plot->lp_properties.p_type == PT_CHARACTER) {
-       if (plot->labels->font && plot->labels->font[0])
+       if (plot->labels && plot->labels->font && plot->labels->font[0])
            (*t->set_font) ("");
        ignore_enhanced(FALSE);
     }
diff --git src/graphics.c src/graphics.c
index 083cb61f4..f68ef7096 100644
--- src/graphics.c
+++ src/graphics.c
@@ -2649,7 +2649,7 @@ plot_points(struct curve_points *plot)
     /* Set whatever we can that applies to every point in the loop */
     if (plot->lp_properties.p_type == PT_CHARACTER) {
        ignore_enhanced(TRUE);
-       if (plot->labels->font && plot->labels->font[0])
+       if (plot->labels && plot->labels->font && plot->labels->font[0])
            (*t->set_font) (plot->labels->font);
        (*t->justify_text) (CENTRE);
     }
@@ -2781,7 +2781,7 @@ plot_points(struct curve_points *plot)
 
     /* Return to initial state */
     if (plot->lp_properties.p_type == PT_CHARACTER) {
-       if (plot->labels->font && plot->labels->font[0])
+       if (plot->labels && plot->labels->font && plot->labels->font[0])
            (*t->set_font) ("");
        ignore_enhanced(FALSE);
     }

++++++ fix4bug1240326.patch ++++++
commit 226809aebb345e74d371bb43a2b434b490be527a
Author: Ethan A Merritt <merr...@u.washington.edu>
Date:   Wed Jan 15 11:56:13 2025 -0800

    dumb:  more stringent tests against y bound of dumb terminal charcell array
    
    Bug 2756

diff --git term/dumb.trm term/dumb.trm
index 498e27fc6..fdc94fbf5 100644
--- term/dumb.trm
+++ term/dumb.trm
@@ -801,7 +801,7 @@ DUMB_put_text(unsigned int x, unsigned int y, const char 
*str)
 {
     int i, length;
 
-    if (y > dumb_ymax)
+    if (y < 0 || y > dumb_ymax)
        return;
 
     length = gp_strlen(str);
@@ -949,7 +949,7 @@ ENHdumb_FLUSH()
        y += i;
 
        /* print the string fragment, perhaps invisibly */
-       if (ENHdumb_show && y < dumb_ymax) {
+       if (ENHdumb_show && (0 <= y && y < dumb_ymax)) {
            for (i = 0; i < len && x < dumb_xmax; i++, x++) {
                utf8_copy_one( (char *)(&DUMB_PIXEL(x, y)), gp_strchrn(str,i));
 #ifndef NO_DUMB_COLOR_SUPPORT

++++++ fix4bug1240327.patch ++++++
commit b78cc829a18e9436daaa859c96f3970157f3171e
Author: Ethan A Merritt <merr...@u.washington.edu>
Date:   Tue Jan 14 21:23:19 2025 -0800

    use snprintf to protect against garbage user-supplied mouse format
    
    Bug 2754

diff --git src/mouse.c src/mouse.c
index 4d1362130..95266738b 100644
--- src/mouse.c
+++ src/mouse.c
@@ -270,7 +270,7 @@ static void alert(void);
 static void MousePosToGraphPosReal(int xx, int yy, double *x, double *y, 
double *x2, double *y2);
 static char *xy_format(void);
 static char *zoombox_format(void);
-static char *GetAnnotateString(char *s, double x, double y, int mode, char 
*fmt);
+static char *GetAnnotateString(char *s, size_t len, double x, double y, int 
mode, char *fmt);
 static char *xDateTimeFormat(double x, char *b, int mode);
 static void GetRulerString(char *p, double x, double y);
 static void apply_zoom(struct t_zoom * z);
@@ -524,7 +524,7 @@ zoombox_format()
 /* formats the information for an annotation (middle mouse button clicked)
  */
 static char *
-GetAnnotateString(char *s, double x, double y, int mode, char *fmt)
+GetAnnotateString(char *s, size_t len, double x, double y, int mode, char *fmt)
 {
     if (axis_array[FIRST_X_AXIS].datatype == DT_DMS
     ||  axis_array[FIRST_Y_AXIS].datatype == DT_DMS) {
@@ -579,11 +579,11 @@ GetAnnotateString(char *s, double x, double y, int mode, 
char *fmt)
            r = rmin + x/cos(phi);
 
        if (fmt)
-           sprintf(s, fmt, theta, r);
+           snprintf(s, len, fmt, theta, r);
        else
            sprintf(s, "theta: %.1f%s  r: %g", theta, degree_sign, r);
     } else if ((mode == MOUSE_COORDINATES_ALT) && fmt) {
-       sprintf(s, fmt, x, y);  /* user defined format */
+       snprintf(s, len, fmt, x, y);    /* user defined format */
     } else if (mode == MOUSE_COORDINATES_FUNCTION) {
        /* EXPERIMENTAL !!! */
        t_value original_x, original_y;
@@ -606,7 +606,7 @@ GetAnnotateString(char *s, double x, double y, int mode, 
char *fmt)
        gpfree_string(&readout);
     } else {
        /* Default format ("set mouse mouseformat" is not active) */
-       sprintf(s, xy_format(), x, y);  /* usual x,y values */
+       snprintf(s, len, xy_format(), x, y);    /* usual x,y values */
     }
     return s + strlen(s);
 }
@@ -1020,10 +1020,10 @@ UpdateStatuslineWithMouseSetting(mouse_setting_t * ms)
        strcat(format, ms->fmt);
        strcat(format, ", ");
        strcat(format, ms->fmt);
-       sprintf(s0, format, surface_rot_x, surface_rot_z, surface_scale, 
surface_zscale);
+       snprintf(s0, 255, format, surface_rot_x, surface_rot_z, surface_scale, 
surface_zscale);
     } else if (!TICS_ON(axis_array[SECOND_X_AXIS].ticmode) && 
!TICS_ON(axis_array[SECOND_Y_AXIS].ticmode)) {
        /* only first X and Y axis are in use */
-       sp = GetAnnotateString(s0, real_x, real_y, mouse_mode, 
mouse_alt_string);
+       sp = GetAnnotateString(s0, 255, real_x, real_y, mouse_mode, 
mouse_alt_string);
        if (ruler.on)
            GetRulerString(sp, real_x, real_y);
     } else {
@@ -2286,7 +2286,7 @@ event_buttonrelease(struct gp_event_t *ge)
             * only place, if the user didn't drag (rotate) the plot */
 
            if (!is_3d_plot || !motion) {
-               GetAnnotateString(s0, real_x, real_y, mouse_mode, 
mouse_alt_string);
+               GetAnnotateString(s0, 255, real_x, real_y, mouse_mode, 
mouse_alt_string);
                term->set_clipboard(s0);
                if (display_ipc_commands()) {
                    fprintf(stderr, "put `%s' to clipboard.\n", s0);
@@ -2302,7 +2302,7 @@ event_buttonrelease(struct gp_event_t *ge)
            /* draw temporary annotation or label. For 3d plots this is
             * only done if the user didn't drag (scale) the plot */
            if (!is_3d_plot || !motion) {
-               GetAnnotateString(s0, real_x, real_y, mouse_mode, 
mouse_alt_string);
+               GetAnnotateString(s0, 255, real_x, real_y, mouse_mode, 
mouse_alt_string);
                if (mouse_setting.label) {
                    if (modifier_mask & Mod_Ctrl) {
                        remove_label(mouse_x, mouse_y);

++++++ fix4bug1240328.patch ++++++
commit ed647df512786b3c94429dd5c864715301e03ea5
Author: Ethan A Merritt <merr...@u.washington.edu>
Date:   Tue Mar 11 16:31:23 2025 -0700

    guard against trying to format a huge number as a time
    
    The time formatting code does not handle time_in_seconds > 1.e12
    (sometime in the year 33658).
    
    Bug 2779

diff --git src/mouse.c src/mouse.c
index ba0609290..a6110f5ff 100644
--- src/mouse.c
+++ src/mouse.c
@@ -619,6 +619,11 @@ static char *
 xDateTimeFormat(double x, char *b, int mode)
 {
     struct tm tm;
+    if (fabs(x) > 1.e12) {  /* Some time in the year 33688 */
+       int_warn(NO_CARET, "time value out of range");
+       *b = '\0';
+       return b;
+    }
 
     switch (mode) {
     case MOUSE_COORDINATES_XDATE:
commit 3270021820ff6ac7a6d77b77fe69777129937994
Author: Ethan A Merritt <merr...@u.washington.edu>
Date:   Wed Mar 12 19:56:13 2025 -0700

    check valid range on time value before trying to format it
    
    Absurdly large time values (number of seconds) cause failures in the
    routines that populate a time structure and format the result.
    The program does complain about an invalid time value but only
    after the failures have already occurred.
    E.g.
            print strftime("%Y", 1.e14)
    
    Now a check for fabs(time) > 1.e12 is the first thing in f_strftime().
    
    Bug 2779

diff --git src/internal.c src/internal.c
index 53be8d409..2d8812e49 100644
--- src/internal.c
+++ src/internal.c
@@ -1905,30 +1905,37 @@ f_strftime(union argument *arg)
        int_error(NO_CARET,
                  "First parameter to strftime must be a format string");
 
-    /* Prepare format string.
-     * Make sure the resulting string not empty by adding a space.
-     * Otherwise, the return value of gstrftime doesn't give enough
-     * information.
-     */
-    fmtlen = strlen(fmt.v.string_val) + 1;
-    fmtstr = gp_alloc(fmtlen + 1, "f_strftime: fmt");
-    strncpy(fmtstr, fmt.v.string_val, fmtlen);
-    strncat(fmtstr, " ", fmtlen);
-    buflen = 80 + 2*fmtlen;
-    buffer = gp_alloc(buflen, "f_strftime: buffer");
-
-    /* Get time_str */
-    length = gstrftime(buffer, buflen, fmtstr, real(&val));
-    if (length == 0 || length >= buflen)
-       int_error(NO_CARET, "String produced by time format is too long");
-
-    /* Remove trailing space */
-    assert(buffer[length-1] == ' ');
-    buffer[length-1] = NUL;
+    /* Range check */
+    if (!(fabs(real(&val)) < 1.e12)) {
+       int_warn(NO_CARET, "time value out of range");
+       buffer = strdup("    ");
+
+    } else {
+       /* Prepare format string.
+        * Make sure the resulting string not empty by adding a space.
+        * Otherwise, the return value of gstrftime doesn't give enough
+        * information.
+        */
+       fmtlen = strlen(fmt.v.string_val) + 1;
+       fmtstr = gp_alloc(fmtlen + 1, "f_strftime: fmt");
+       strncpy(fmtstr, fmt.v.string_val, fmtlen);
+       strncat(fmtstr, " ", fmtlen);
+       buflen = 80 + 2*fmtlen;
+       buffer = gp_alloc(buflen, "f_strftime: buffer");
+
+       /* Get time_str */
+       length = gstrftime(buffer, buflen, fmtstr, real(&val));
+       if (length == 0 || length >= buflen)
+           int_error(NO_CARET, "String produced by time format is too long");
+
+       /* Remove trailing space */
+       assert(buffer[length-1] == ' ');
+       buffer[length-1] = NUL;
+       free(fmtstr);
+    }
 
     gpfree_string(&val);
     gpfree_string(&fmt);
-    free(fmtstr);
 
     push(Gstring(&val, buffer));
     free(buffer);

++++++ fix4bug1240329.patch ++++++
commit b2343fd02c4fff94957f0151b73daa0a1f7fec49
Author: Ethan A Merritt <merr...@u.washington.edu>
Date:   Tue Jan 14 21:54:14 2025 -0800

    canvas:  handle nonlinear x2 or y2 axis with an incomplete definition
    
    Actually "handle" means "ignore".
    But now it doesn't segfault trying to probe a non-existant link function.
    
    Bug 2755

diff --git term/canvas.trm term/canvas.trm
index a919b09bd..bfe567832 100644
--- term/canvas.trm
+++ term/canvas.trm
@@ -646,7 +646,7 @@ CANVAS_text()
        } else
            fprintf(gpoutfile, "gnuplot.plot_axis_x2min = \"none\"\n");
        if (axis_array[SECOND_X_AXIS].linked_to_primary
-       &&  axis_array[FIRST_X_AXIS].link_udf->at) {
+       &&  axis_array[FIRST_X_AXIS].link_udf && 
axis_array[FIRST_X_AXIS].link_udf->at) {
            fprintf(gpoutfile, "gnuplot.x2_mapping = function(x) { return x; 
};");
            fprintf(gpoutfile, "  // replace returned value with %s\n",
                        axis_array[FIRST_X_AXIS].link_udf->definition);
@@ -657,7 +657,7 @@ CANVAS_text()
        } else
            fprintf(gpoutfile, "gnuplot.plot_axis_y2min = \"none\"\n");
        if (axis_array[SECOND_Y_AXIS].linked_to_primary
-       &&  axis_array[FIRST_Y_AXIS].link_udf->at) {
+       &&  axis_array[FIRST_Y_AXIS].link_udf && 
axis_array[FIRST_Y_AXIS].link_udf->at) {
            fprintf(gpoutfile, "gnuplot.y2_mapping = function(y) { return y; 
};");
            fprintf(gpoutfile, "  // replace returned value with %s\n",
                        axis_array[FIRST_Y_AXIS].link_udf->definition);

++++++ fix4bug1240330.patch ++++++
commit af96c2c1b20383684b1ec2084dab7936f7053031
Author: Ethan A Merritt <merr...@u.washington.edu>
Date:   Tue Jan 14 20:56:37 2025 -0800

    x11: protect against double fclose() if two errors in a row
    
    Bug 2753

diff --git term/x11.trm term/x11.trm
index 18ad4ad85..cbe01dd0e 100644
--- term/x11.trm
+++ term/x11.trm
@@ -854,8 +854,9 @@ X11_atexit()
        /* dont wait(), since they might be -persist */
        X11_ipc = NULL;
 #ifdef PIPE_IPC
-       close(ipc_back_fd);
-       ipc_back_fd = -1;
+       if (ipc_back_fd >= 0)
+           close(ipc_back_fd);
+       ipc_back_fd = IPC_BACK_CLOSED;
 #endif
     }
 }
@@ -1374,7 +1375,8 @@ X11_graphics()
 #ifdef PIPE_IPC
     /* if we know the outboard driver has stopped, restart it */
     if (ipc_back_fd == IPC_BACK_CLOSED) {
-       fclose(X11_ipc);
+       if (X11_ipc > 0)
+           fclose(X11_ipc);
        X11_ipc = NULL;
        X11_init();
     }

++++++ fix4bug1241684.patch ++++++
commit a5897feadc4be73b0ffd8458556c47117bd24d03
Author: Ethan A Merritt <merr...@u.washington.edu>
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);
 }
 

Reply via email to