diff --git a/src/script.c b/src/script.c index 74aef1b1..d7cd87c9 100644 --- a/src/script.c +++ b/src/script.c @@ -477,12 +477,22 @@ dumplease: fp = NULL; #endif + + char xbuf[2048]; + + hwaddr_ntoa(buf, (size_t)buf_pos, xbuf, sizeof(xbuf)); + loginfox("xbuf1 %s", xbuf); + nenv = 0; endp = buf + buf_pos; + loginfox("buf %p endp %p", buf, endp); for (bufp = buf; bufp < endp; bufp++) { - if (*bufp == '\0') + if (*bufp == '\0') { + loginfox("bufp %zu %p is zero", nenv, bufp); nenv++; + } } + loginfox("nenv %zu envlen %zu", nenv, ctx->script_envlen); if (ctx->script_envlen < nenv) { env = reallocarray(ctx->script_env, nenv + 1, sizeof(*env)); if (env == NULL) @@ -490,14 +500,25 @@ dumplease: ctx->script_env = env; ctx->script_envlen = nenv; } + loginfox("nenv %zu envlen %zu", nenv, ctx->script_envlen); bufp = buf; envp = ctx->script_env; + loginfox("envp %p", envp); *envp++ = bufp++; endp--; /* Avoid setting the last \0 to an invalid pointer */ + nenv = 0; for (; bufp < endp; bufp++) { - if (*bufp == '\0') + if (*bufp == '\0') { + loginfox("bufp %zu %p is zero, envp %p", nenv, bufp, envp); *envp++ = bufp + 1; + nenv++; + } } + hwaddr_ntoa(buf, (size_t)buf_pos, xbuf, sizeof(xbuf)); + loginfox("xbuf2 %s", xbuf); + loginfox("buf %p endp %p", buf, endp); + loginfox("script %p end %p envp %p", ctx->script_env, ctx->script_env + ctx->script_envlen, envp); + loginfox("diff %zu", envp - ctx->script_env); *envp = NULL; return (ssize_t)nenv;