There's exactly one global variable in signify, but it could be local. We do write to this variable, but not to move data between functions.
Index: zsig.c =================================================================== RCS file: /cvs/src/usr.bin/signify/zsig.c,v retrieving revision 1.15 diff -u -p -r1.15 zsig.c --- zsig.c 11 Jul 2017 23:52:05 -0000 1.15 +++ zsig.c 23 Feb 2019 22:47:59 -0000 @@ -49,9 +49,6 @@ struct gzheader { #define GZHEADERLENGTH 10 #define MYBUFSIZE 65536LU - -static uint8_t fake[10] = { 0x1f, 0x8b, 8, FCOMMENT_FLAG, 0, 0, 0, 0, 0, 3 }; - static uint8_t * readgz_header(struct gzheader *h, int fd) { @@ -184,6 +181,7 @@ zverify(const char *pubkeyfile, const ch char *p, *meta; uint8_t *bufend; int fdin, fdout; + uint8_t fake[10] = { 0x1f, 0x8b, 8, FCOMMENT_FLAG, 0, 0, 0, 0, 0, 3 }; /* by default, verification will love pipes */ if (!sigfile) @@ -244,6 +242,7 @@ zsign(const char *seckeyfile, const char uint8_t *sighdr; char date[80]; time_t clock; + uint8_t fake[10] = { 0x1f, 0x8b, 8, FCOMMENT_FLAG, 0, 0, 0, 0, 0, 3 }; fdin = xopen(msgfile, O_RDONLY, 0); if (fstat(fdin, &sb) == -1 || !S_ISREG(sb.st_mode))