Update.
authorUlrich Drepper <drepper@redhat.com>
Fri, 27 Aug 1999 21:44:13 +0000 (21:44 +0000)
committerUlrich Drepper <drepper@redhat.com>
Fri, 27 Aug 1999 21:44:13 +0000 (21:44 +0000)
* inet/rexec.c (rexec): Free memory if strings were allocated in
ruserpass.  Reported by Andrew Morton <morton@nortelnetworks.com>.

1999-08-27  Ulrich Drepper  <drepper@cygnus.com>

ChangeLog
inet/rexec.c

index 2e98a5d..855207c 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,10 @@
 1999-08-27  Ulrich Drepper  <drepper@cygnus.com>
 
+       * inet/rexec.c (rexec): Free memory if strings were allocated in
+       ruserpass.  Reported by Andrew Morton <morton@nortelnetworks.com>.
+
+1999-08-27  Ulrich Drepper  <drepper@cygnus.com>
+
        * locale/categories.def: Use __YESSTR amd __NOSTR in definition.
 
        * manual/argp.texi: Fixing language and typos.
index 897030e..643f277 100644 (file)
@@ -54,6 +54,8 @@ rexec(ahost, rport, name, pass, cmd, fd2p)
 {
        struct sockaddr_in sin, sin2, from;
        struct hostent hostbuf, *hp;
+       const char *orig_name = name;
+       const char *orig_pass = pass;
        size_t hstbuflen;
        char *hsttmpbuf;
        u_short port;
@@ -138,6 +140,14 @@ retry:
        /* should public key encypt the password here */
        (void) __write(s, pass, strlen(pass) + 1);
        (void) __write(s, cmd, strlen(cmd) + 1);
+
+       /* We don't need the memory allocated for the name and the password
+          in ruserpass anymore.  */
+       if (name != orig_name)
+         free (name);
+       if (pass != orig_pass)
+         free (pass);
+
        if (__read(s, &c, 1) != 1) {
                perror(*ahost);
                goto bad;