From: Ian Jackson Date: Tue, 29 Mar 2016 22:45:14 +0000 (+0100) Subject: cgi-fcgi-interp: Make ident_sc global, and introduce ident_addstring (nfc) X-Git-Tag: archive/debian/5.0.0~32 X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ian/git?p=chiark-utils.git;a=commitdiff_plain;h=c7d21d25f3ca85a49a4f6a6e32b35b618817af37 cgi-fcgi-interp: Make ident_sc global, and introduce ident_addstring (nfc) --- diff --git a/cprogs/cgi-fcgi-interp.c b/cprogs/cgi-fcgi-interp.c index 96037a3..7a6323e 100644 --- a/cprogs/cgi-fcgi-interp.c +++ b/cprogs/cgi-fcgi-interp.c @@ -151,6 +151,8 @@ static const char *interp, *ident; static int numservers=4, debugmode; static int check_interval=300; +static struct sha256_ctx identsc; + const char *stage2; void diee(const char *m) { @@ -178,6 +180,11 @@ static void of_iassign(const struct cmdinfo *ci, const char *val) { *ci->iassignto = v; } +static void ident_addstring(const struct cmdinfo *ci, const char *string) { + /* ci may be 0 and is provided so this can be .call */ + sha256_update(&identsc,strlen(string)+1,string); +} + #define MAX_OPTS 5 static const struct cmdinfo cmdinfos[]= { @@ -267,14 +274,12 @@ static void find_socket_path(void) { int identlen = maxidentlen > 64 ? 64 : maxidentlen; char *hexident = xmalloc(identlen + 2); - struct sha256_ctx sc; unsigned char bbuf[32]; int i; - sha256_init(&sc); - sha256_update(&sc,strlen(interp)+1,interp); - sha256_update(&sc,strlen(script)+1,script); - sha256_digest(&sc,sizeof(bbuf),bbuf); + ident_addstring(0,interp); + ident_addstring(0,script); + sha256_digest(&identsc,sizeof(bbuf),bbuf); for (i=0; i=2 && (smashedopt = argv[1]) && smashedopt[0]=='-' &&