X-Git-Url: https://code.citadel.org/?a=blobdiff_plain;f=webcit%2Fsubst.c;h=38f147b67dab44199a2039b450e36e4ffb66ba09;hb=b1f320eba210f7f1019e86ae88f7dd3d0ed1557c;hp=c7047771339dc617d5e7699ced56a85141f74bd3;hpb=7efbda7122290fb0bca37dad88145d7ed9ef5333;p=citadel.git diff --git a/webcit/subst.c b/webcit/subst.c index c70477713..38f147b67 100644 --- a/webcit/subst.c +++ b/webcit/subst.c @@ -29,8 +29,6 @@ #include #include "webcit.h" -struct wcsubst *global_subst = NULL; - /* * Clear out the list of substitution variables local to this session @@ -49,6 +47,8 @@ void clear_local_substs(void) { free(WC->vars); WC->vars = ptr; } + + WC->vars = NULL; } @@ -58,14 +58,10 @@ void clear_local_substs(void) { void svprintf(char *keyname, int keytype, const char *format,...) { va_list arg_ptr; - char wbuf[4096]; + char wbuf[SIZ]; struct wcsubst *ptr = NULL; struct wcsubst *scan; - va_start(arg_ptr, format); - vsnprintf(wbuf, sizeof wbuf, format, arg_ptr); - va_end(arg_ptr); - /* First scan through to see if we're doing a replacement of * an existing key */ @@ -80,10 +76,16 @@ void svprintf(char *keyname, int keytype, const char *format,...) if (ptr == NULL) { ptr = (struct wcsubst *) malloc(sizeof(struct wcsubst)); ptr->next = WC->vars; - strcpy(ptr->wcs_key, keyname); + safestrncpy(ptr->wcs_key, keyname, sizeof ptr->wcs_key); WC->vars = ptr; } + /* Format the string and save it */ + + va_start(arg_ptr, format); + vsnprintf(wbuf, sizeof wbuf, format, arg_ptr); + va_end(arg_ptr); + ptr->wcs_type = keytype; ptr->wcs_value = strdup(wbuf); } @@ -144,7 +146,7 @@ void print_value_of(char *keyname) { } if (!strcasecmp(keyname, "SERV_PID")) { - wprintf("%d", serv_info.serv_pid); + wprintf("%d", WC->ctdl_pid); } else if (!strcasecmp(keyname, "SERV_NODENAME")) {