Fix a premature free in ss_listen()
authorGreg Hudson <ghudson@mit.edu>
Mon, 25 Jul 2011 15:54:36 +0000 (15:54 +0000)
committerGreg Hudson <ghudson@mit.edu>
Mon, 25 Jul 2011 15:54:36 +0000 (15:54 +0000)
The readline support change freed input just after ss_execute_line(),
but input can be used in the error block immediately following.  Free
input after the error block instead.

git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@25046 dc483132-0cff-0310-8789-dd5450dbe970

src/util/ss/listen.c

index 9a7b4aee53a5cc5d3a8fd5f8b2994f807cca5a77..75b9044904198e8e6f982c5289ee570ea12de898 100644 (file)
@@ -135,7 +135,6 @@ int ss_listen (sci_idx)
 #endif
 
         code = ss_execute_line (sci_idx, input);
-        free(input);
         if (code == SS_ET_COMMAND_NOT_FOUND) {
             register char *c = input;
             while (*c == ' ' || *c == '\t')
@@ -150,6 +149,7 @@ int ss_listen (sci_idx)
                       "Unknown request \"%s\".  Type \"?\" for a request list.",
                       c);
         }
+        free(input);
     }
     code = 0;
 egress: