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
|