Blob Blame History Raw
--- a/drgeo-1.1.0-format-security.patch	
+++ a/drgeo-1.1.0-format-security.patch	
@@ -0,0 +1,82 @@ 
+These are actually arrays of string literals, but there doesn't seem to
+be a way of convincing gcc of that
+
+--- a/geo/drgeo_postscriptdrawable.cc
++++ b/geo/drgeo_postscriptdrawable.cc
+@@ -130,8 +130,8 @@ drgeoPostScriptDrawable::drawPoint (drgeoStyle & style, drgeoPoint & point)
+   p = areaToPostScript (point);
+ 
+   /* we're initializing color and line width */
+-  fprintf (fileHandle, postscriptColor[style.color]);
+-  fprintf (fileHandle, postscriptLineWidth[drgeoThicknessNormal + 1]);
++  fprintf (fileHandle, "%s", postscriptColor[style.color]);
++  fprintf (fileHandle, "%s", postscriptLineWidth[drgeoThicknessNormal + 1]);
+ 
+   switch (style.pointShape)
+     {
+@@ -207,9 +207,9 @@ drawPolygon (drgeoStyle & style, drgeoPoint * point, gint number)
+   gint nb;
+ 
+   /* we're initializing color and line width */
+-  fprintf (fileHandle, postscriptColor[style.color]);
++  fprintf (fileHandle, "%s", postscriptColor[style.color]);
+   /* Invisible line. */
+-  fprintf (fileHandle, postscriptLineWidth[0]);
++  fprintf (fileHandle, "%s", postscriptLineWidth[0]);
+ 
+   fprintf (fileHandle, "%%Polygon\nnewpath\n");
+ 
+@@ -235,11 +235,11 @@ drawSegment (drgeoStyle & style, drgeoPoint & start, drgeoPoint & end)
+   p2 = areaToPostScript (end);
+   p1 = areaToPostScript (start);
+ 
+-  fprintf (fileHandle, postscriptColor[style.color]);
++  fprintf (fileHandle, "%s", postscriptColor[style.color]);
+   if (style.mask == yes)
+-    fprintf (fileHandle, postscriptLineWidth[0]);
++    fprintf (fileHandle, "%s", postscriptLineWidth[0]);
+   else
+-    fprintf (fileHandle, postscriptLineWidth[style.thick + 1]);
++    fprintf (fileHandle, "%s", postscriptLineWidth[style.thick + 1]);
+   fprintf (fileHandle,
+ 	   "%% Segment\n%f %f moveto %f %f lineto stroke\n",
+ 	   p1.getX () * PostScriptScale, p1.getY () * PostScriptScale,
+@@ -263,11 +263,11 @@ drawCircle (drgeoStyle & style, drgeoPoint & center, double radius)
+   drgeoPoint p;
+ 
+   p = areaToPostScript (center);
+-  fprintf (fileHandle, postscriptColor[style.color]);
++  fprintf (fileHandle, "%s", postscriptColor[style.color]);
+   if (style.mask == yes)
+-    fprintf (fileHandle, postscriptLineWidth[0]);
++    fprintf (fileHandle, "%s", postscriptLineWidth[0]);
+   else
+-    fprintf (fileHandle, postscriptLineWidth[style.thick + 1]);
++    fprintf (fileHandle, "%s", postscriptLineWidth[style.thick + 1]);
+   fprintf (fileHandle,
+ 	   /* is there a better way to draw a circle in ps ? */
+ 	   "%% Circle\n%f %f moveto %f %f %f 0 360 arc closepath stroke\n",
+@@ -285,11 +285,11 @@ drawArc (drgeoStyle & style, drgeoPoint & center, double radius,
+   drgeoPoint p, startPoint;
+ 
+   p = areaToPostScript (center);
+-  fprintf (fileHandle, postscriptColor[style.color]);
++  fprintf (fileHandle, "%s", postscriptColor[style.color]);
+   if (style.mask == yes)
+-    fprintf (fileHandle, postscriptLineWidth[0]);
++    fprintf (fileHandle, "%s", postscriptLineWidth[0]);
+   else
+-    fprintf (fileHandle, postscriptLineWidth[style.thick + 1]);
++    fprintf (fileHandle, "%s", postscriptLineWidth[style.thick + 1]);
+ 
+ 
+ 
+@@ -336,7 +336,7 @@ drawText (drgeoPoint & where, char *text, drgeoColorType fontColor)
+   // FIXME: how to handle this correctly ?
+   convString = g_convert (text, -1, "iso8859-1", "utf-8", NULL, NULL, NULL);
+ 
+-  fprintf (fileHandle, postscriptColor[fontColor]);
++  fprintf (fileHandle, "%s", postscriptColor[fontColor]);
+   /* The size of the font is arbitrary : 10 points */
+   fprintf (fileHandle,
+ 	   "%% Text\n/Times findfont 10 scalefont setfont %f %f moveto (%s) show\n",