]> asedeno.scripts.mit.edu Git - PuTTY.git/commitdiff
Patch from Colin Watson: we were sometimes passing stack storage to putenv(),
authorJacob Nevins <jacobn@chiark.greenend.org.uk>
Fri, 15 Jul 2005 11:47:28 +0000 (11:47 +0000)
committerJacob Nevins <jacobn@chiark.greenend.org.uk>
Fri, 15 Jul 2005 11:47:28 +0000 (11:47 +0000)
which is Bad (in his case, it caused TERM to end up unset). Use malloc()'d
storage instead.

[originally from svn r6095]

unix/uxpty.c

index b3bda081c2fa69c86f6b53874101861b515a7883..96489e1a53c281042e07d6a524d93fc33fca3f3b 100644 (file)
@@ -754,15 +754,19 @@ static const char *pty_init(void *frontend, void **backend_handle, Config *cfg,
        for (i = 3; i < 1024; i++)
            close(i);
        {
-           char term_env_var[10 + sizeof(cfg->termtype)];
-           sprintf(term_env_var, "TERM=%s", cfg->termtype);
+           char *term_env_var = dupprintf("TERM=%s", cfg->termtype);
            putenv(term_env_var);
+           /* We mustn't free term_env_var, as putenv links it into the
+            * environment in place.
+            */
        }
 #ifndef NOT_X_WINDOWS                 /* for Mac OS X native compilation */
        {
-           char windowid_env_var[40];
-           sprintf(windowid_env_var, "WINDOWID=%ld", windowid);
+           char *windowid_env_var = dupprintf("WINDOWID=%ld", windowid);
            putenv(windowid_env_var);
+           /* We mustn't free windowid_env_var, as putenv links it into the
+            * environment in place.
+            */
        }
 #endif
        {