OpenSSH
[Top] [All Lists]

Re: Error message after upgraing the openssh 4.6P1

To: ESQUIRE Sithesvaran <ESQUIRE_SITHESVARAN@dm.gov.ae>
Subject: Re: Error message after upgraing the openssh 4.6P1
From: Darren Tucker <dtucker@zip.com.au>
Date: Tue, 10 Apr 2007 14:10:10 +1000
Cc: OpenSSH Devel List <openssh-unix-dev@mindrot.org>
Delivered-to: sp-com-lists@consult.net
Delivered-to: openssh-unix-dev-list1@securepoint.com
Delivered-to: openssh-unix-dev-tmda@mindrot.org
Delivered-to: openssh-unix-dev@mindrot.org
In-reply-to: <983771046C3CD8478025E73F533B25B90165277A@HQOMAIL.dm.ae>
List-archive: <http://lists.mindrot.org/pipermail/openssh-unix-dev>
List-help: <mailto:openssh-unix-dev-request@mindrot.org?subject=help>
List-id: Development of portable OpenSSH <openssh-unix-dev.mindrot.org>
List-post: <mailto:openssh-unix-dev@mindrot.org>
List-subscribe: <http://lists.mindrot.org/mailman/listinfo/openssh-unix-dev>, <mailto:openssh-unix-dev-request@mindrot.org?subject=subscribe>
List-unsubscribe: <http://lists.mindrot.org/mailman/listinfo/openssh-unix-dev>, <mailto:openssh-unix-dev-request@mindrot.org?subject=unsubscribe>
References: <983771046C3CD8478025E73F533B25B90165277A@HQOMAIL.dm.ae>
Sender: openssh-unix-dev-bounces+openssh-unix-dev-list1=securepoint.com@mindrot.org
User-agent: Thunderbird 1.5.0.10 (Windows/20070221)
ESQUIRE Sithesvaran wrote:
Thanks for your response. But really I don't understand you are talking
about which patch file. Can you please explain me in detail?

What you needed to do was to save the message as a text file, eg called "patchfile", then run the patch command.

You can download a newer version of the patch from the bugzilla bug:
http://bugzilla.mindrot.org/attachment.cgi?id=1260

Save it to a file called "patchfile" in /tmp, then change to the unpacked openssh-4.6p1 directory and run "patch -p0 </tmp/patchfile", then build OpenSSH normally.

--
Darren Tucker (dtucker at zip.com.au)
GPG key 8FF4FA69 / D9A3 86E9 7EEE AF4B B2D4  37C9 C982 80C7 8FF4 FA69
    Good judgement comes with experience. Unfortunately, the experience
usually comes from bad judgement.
Index: channels.c
===================================================================
RCS file: /usr/local/src/security/openssh/cvs/openssh/channels.c,v
retrieving revision 1.251
diff -u -p -r1.251 channels.c
--- channels.c  28 Jan 2007 23:16:28 -0000      1.251
+++ channels.c  10 Apr 2007 02:35:06 -0000
@@ -932,7 +932,7 @@ channel_pre_x11_open(Channel *c, fd_set 
        } else if (ret == -1) {
                logit("X11 connection rejected because of wrong 
authentication.");
                debug2("X11 rejected %d i%d/o%d", c->self, c->istate, 
c->ostate);
-               chan_read_failed(c);
+               chan_read_failed(c, 0);
                buffer_clear(&c->input);
                chan_ibuf_empty(c);
                buffer_clear(&c->output);
@@ -1446,12 +1446,13 @@ static int
 channel_handle_rfd(Channel *c, fd_set *readset, fd_set *writeset)
 {
        char buf[CHAN_RBUF];
-       int len;
+       int len, save_errno;
 
        if (c->rfd != -1 &&
            (c->detach_close || FD_ISSET(c->rfd, readset))) {
                errno = 0;
                len = read(c->rfd, buf, sizeof(buf));
+               save_errno = errno;
                if (len < 0 && (errno == EINTR ||
                    (errno == EAGAIN && !(c->isatty && c->detach_close))))
                        return 1;
@@ -1472,14 +1473,14 @@ channel_handle_rfd(Channel *c, fd_set *r
                                c->type = SSH_CHANNEL_INPUT_DRAINING;
                                debug2("channel %d: input draining.", c->self);
                        } else {
-                               chan_read_failed(c);
+                               chan_read_failed(c, save_errno);
                        }
                        return -1;
                }
                if (c->input_filter != NULL) {
                        if (c->input_filter(c, buf, len) == -1) {
                                debug2("channel %d: filter stops", c->self);
-                               chan_read_failed(c);
+                               chan_read_failed(c, 0);
                        }
                } else if (c->datagram) {
                        buffer_put_string(&c->input, buf, len);
@@ -1643,7 +1644,7 @@ channel_handle_ctl(Channel *c, fd_set *r
                                chan_mark_dead(c);
                                return -1;
                        } else {
-                               chan_read_failed(c);
+                               chan_read_failed(c, 0);
                                chan_write_failed(c);
                        }
                        return -1;
Index: channels.h
===================================================================
RCS file: /usr/local/src/security/openssh/cvs/openssh/channels.h,v
retrieving revision 1.81
diff -u -p -r1.81 channels.h
--- channels.h  5 Aug 2006 02:39:39 -0000       1.81
+++ channels.h  10 Apr 2007 02:01:21 -0000
@@ -240,7 +240,7 @@ void         chan_mark_dead(Channel *);
 /* channel events */
 
 void    chan_rcvd_oclose(Channel *);
-void    chan_read_failed(Channel *);
+void    chan_read_failed(Channel *, int);
 void    chan_ibuf_empty(Channel *);
 
 void    chan_rcvd_ieof(Channel *);
Index: nchan.c
===================================================================
RCS file: /usr/local/src/security/openssh/cvs/openssh/nchan.c,v
retrieving revision 1.56
diff -u -p -r1.56 nchan.c
--- nchan.c     5 Aug 2006 02:39:40 -0000       1.56
+++ nchan.c     10 Apr 2007 02:41:02 -0000
@@ -133,17 +133,19 @@ chan_rcvd_oclose1(Channel *c)
        }
 }
 void
-chan_read_failed(Channel *c)
+chan_read_failed(Channel *c, int err_no)
 {
-       debug2("channel %d: read failed", c->self);
+       debug2("channel %d: read failed%s, istate %d", c->self,
+           err_no ? "" : " (simulated)", c->istate);
        switch (c->istate) {
        case CHAN_INPUT_OPEN:
                chan_shutdown_read(c);
                chan_set_istate(c, CHAN_INPUT_WAIT_DRAIN);
                break;
        default:
-               error("channel %d: chan_read_failed for istate %d",
-                   c->self, c->istate);
+               if (err_no != 0)
+                       error("channel %d: chan_read_failed for istate %d: %s",
+                           c->self, c->istate, strerror(errno));
                break;
        }
 }
_______________________________________________
openssh-unix-dev mailing list
openssh-unix-dev@mindrot.org
http://lists.mindrot.org/mailman/listinfo/openssh-unix-dev
<Prev in Thread] Current Thread [Next in Thread>