summaryrefslogtreecommitdiff
path: root/print/cups-base/files/patch-hpgl-input.c
diff options
context:
space:
mode:
Diffstat (limited to 'print/cups-base/files/patch-hpgl-input.c')
-rw-r--r--print/cups-base/files/patch-hpgl-input.c50
1 files changed, 50 insertions, 0 deletions
diff --git a/print/cups-base/files/patch-hpgl-input.c b/print/cups-base/files/patch-hpgl-input.c
new file mode 100644
index 000000000000..9483b571daed
--- /dev/null
+++ b/print/cups-base/files/patch-hpgl-input.c
@@ -0,0 +1,50 @@
+Index: hpgl-input.c
+===================================================================
+RCS file: /development/cvs/cups/filter/hpgl-input.c,v
+retrieving revision 1.16
+diff -u -r1.16 hpgl-input.c
+--- filter/hpgl-input.c 25 Feb 2004 20:14:52 -0000 1.16
++++ filter/hpgl-input.c 16 Dec 2004 19:38:12 -0000
+@@ -54,7 +54,8 @@
+ ch, /* Current char */
+ done, /* Non-zero when the current command is read */
+ i; /* Looping var */
+- char buf[262144]; /* String buffer */
++ char buf[262144], /* String buffer */
++ *bufptr; /* Pointer into buffer */
+ static param_t p[MAX_PARAMS]; /* Parameter buffer */
+
+
+@@ -128,9 +129,12 @@
+
+ if (strcasecmp(name, "LB") == 0)
+ {
+- for (i = 0; (ch = getc(fp)) != StringTerminator; i ++)
+- buf[i] = ch;
+- buf[i] = '\0';
++ bufptr = buf;
++ while ((ch = getc(fp)) != StringTerminator)
++ if (bufptr < (buf + sizeof(buf) - 1))
++ *bufptr++ = ch;
++ *bufptr = '\0';
++
+ p[num_params].type = PARAM_STRING;
+ p[num_params].value.string = strdup(buf);
+ num_params ++;
+@@ -155,11 +159,12 @@
+ }
+ else if (strcasecmp(name, "PE") == 0)
+ {
+- for (i = 0; i < (sizeof(buf) - 1); i ++)
+- if ((buf[i] = getc(fp)) == ';')
+- break;
++ bufptr = buf;
++ while ((ch = getc(fp)) != ';')
++ if (bufptr < (buf + sizeof(buf) - 1))
++ *bufptr++ = ch;
++ *bufptr = '\0';
+
+- buf[i] = '\0';
+ p[num_params].type = PARAM_STRING;
+ p[num_params].value.string = strdup(buf);
+ num_params ++;