Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
SUSE:SLE-15-SP2:GA
transfig.12287
transfig-03ea4578.patch
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File transfig-03ea4578.patch of Package transfig.12287
commit 03ea4578258d2d9ca1ceb080e469ad261db39ef0 Author: Thomas Loimer <thomas.loimer@tuwien.ac.at> Date: Fri Jul 26 23:25:50 2019 +0200 Allow circle arrowheads when mag >= 42, ticket #52 Circle and half-circle arrowheads would be drawn with 40 + mag/4 points by calc_arrow() in bound.c. However, the point arrays passed to calc_arrow() would only contain 50 points. With a magnification >= 42, a buffer overrun would occur. Simply use 40 points, independent of magnification. --- fig2dev/bound.c | 6 +++--- fig2dev/read1_3.c | 14 ++++++++------ 2 files changed, 11 insertions(+), 9 deletions(-) --- fig2dev/bound.c +++ fig2dev/bound.c 2019-08-15 07:06:42.609509358 +0000 @@ -905,7 +905,7 @@ calc_arrow(int x1, int y1, int x2, int y /* * CIRCLE and HALF-CIRCLE arrowheads * - * We approximate circles with (40+zoom)/4 points + * We approximate circles with 40 points */ double maxx; double fix_x, fix_y, xs, ys; @@ -936,8 +936,8 @@ calc_arrow(int x1, int y1, int x2, int y dy = my - ys; fix_x = xs + (dx / 2.0); fix_y = ys + (dy / 2.0); - /* choose number of points for circle - 40+mag/4 points */ - *npoints = np = round(mag/4.0) + 40; + /* choose number of points for circle */ + *npoints = np = 40; if (type == 5) { /* full circle */ --- fig2dev/read1_3.c +++ fig2dev/read1_3.c 2019-08-15 07:06:42.609509358 +0000 @@ -211,13 +211,14 @@ read_compoundobject(FILE *fp) &com->secorner.x, &com->secorner.y); if (n != 4) { put_msg("Incorrect compound object format"); + free(com); return(NULL); } while (fscanf(fp, "%d", &object) == 1) { switch (object) { case OBJ_POLYLINE : if ((l = read_lineobject(fp)) == NULL) { - free_line(&l); + free_compound(&com); return(NULL); } if (ll) @@ -227,7 +228,7 @@ read_compoundobject(FILE *fp) break; case OBJ_SPLINE : if ((s = read_splineobject(fp)) == NULL) { - free_spline(&s); + free_compound(&com); return(NULL); } if (ls) @@ -237,7 +238,7 @@ read_compoundobject(FILE *fp) break; case OBJ_ELLIPSE : if ((e = read_ellipseobject(fp)) == NULL) { - free_ellipse(&e); + free_compound(&com); return(NULL); } if (le) @@ -247,7 +248,7 @@ read_compoundobject(FILE *fp) break; case OBJ_ARC : if ((a = read_arcobject(fp)) == NULL) { - free_arc(&a); + free_compound(&com); return(NULL); } if (la) @@ -257,7 +258,7 @@ read_compoundobject(FILE *fp) break; case OBJ_TEXT : if ((t = read_textobject(fp)) == NULL) { - free_text(&t); + free_compound(&com); return(NULL); } if (lt) @@ -267,7 +268,7 @@ read_compoundobject(FILE *fp) break; case OBJ_COMPOUND : if ((c = read_compoundobject(fp)) == NULL) { - free_compound(&c); + free_compound(&com); return(NULL); } if (lc) @@ -287,6 +288,7 @@ read_compoundobject(FILE *fp) #else put_msg("Format error."); #endif + free_compound(&com); return(NULL); } }
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor