]> CyberLeo.Net >> Repos - CDN/cdn-ports-overlay.git/blob - cdn/ports/net/tinyfugue/files/patch-fix-vsprintf-amd64
net/tinyfugue: add patch to fix vsprintf crash in /ps
[CDN/cdn-ports-overlay.git] / cdn / ports / net / tinyfugue / files / patch-fix-vsprintf-amd64
1 diff -U5 -r src/tfio.c src/tfio.c
2 --- src/tfio.c  2007-01-13 18:12:39.000000000 -0500
3 +++ src/tfio.c  2007-02-02 16:50:12.000000000 -0500
4 @@ -495,10 +495,11 @@
5      const char *q, *sval;
6      char *specptr, quote;
7      const conString *Sval;
8      int len, min, max, leftjust, stars;
9      attr_t attrs = buf->attrs;
10 +    va_list aq;
11  
12      if (!(flags & SP_APPEND) && buf->data) Stringtrunc(buf, 0);
13      while (*fmt) {
14          if (*fmt != '%' || *++fmt == '%') {
15              for (q = fmt + 1; *q && *q != '%'; q++);
16 @@ -520,11 +521,13 @@
17          switch (*fmt) {
18          case 'd': case 'i':
19          case 'x': case 'X': case 'u': case 'o':
20          case 'f': case 'e': case 'E': case 'g': case 'G':
21          case 'p':
22 -            vsprintf(tempbuf, spec, ap);
23 +            va_copy(aq, ap);
24 +            vsprintf(tempbuf, spec, aq);
25 +            va_end(aq);
26              Stringcat(buf, tempbuf);
27              /* eat the arguments used by vsprintf() */
28              while (stars--) (void)va_arg(ap, int);
29              switch (*fmt) {
30              case 'd': case 'i':