Patch: OpenSSH 2.1.0 under Solaris 8, Solaris 7 and other sys tems, too
Marc G. Fournier
marc.fournier at acadiau.ca
Tue May 16 23:33:16 EST 2000
does this replace, or work over top of, Norbert's patch?
On Mon, 15 May 2000, Badura, Christoph wrote:
> Because Norbert's patch didn't fix all the core dumps here's a minimal
> minimal patch that implements Andre's suggestion:
>
> *** entropy.c.orig Tue May 2 01:56:41 2000
> --- entropy.c Mon May 15 16:18:22 2000
> ***************
> *** 129,134 ****
> --- 129,136 ----
> unsigned int badness;
> /* Increases by factor of two each timeout */
> unsigned int sticky_badness;
> + /* Unparsed copy of cmd field in control file */
> + char *cmd;
> /* Path to executable */
> char *path;
> /* argv to pass to executable */
> ***************
> *** 211,218 ****
>
> /* FIXME: turn this off later */
> #if 1
> ! debug("Got %0.2f bytes of entropy from %s",
> entropy_estimate,
> ! entropy_sources[c].path);
> #endif
>
> total_entropy_estimate += entropy_estimate;
> --- 213,220 ----
>
> /* FIXME: turn this off later */
> #if 1
> ! debug("Got %0.2f bytes of entropy from
> '%s'", entropy_estimate,
> ! entropy_sources[c].cmd);
> #endif
>
> total_entropy_estimate += entropy_estimate;
> ***************
> *** 225,233 ****
> } else {
> /* FIXME: turn this off later */
> #if 1
> ! debug("Command '%s %s %s' disabled (badness
> %d)",
> ! entropy_sources[c].path,
> entropy_sources[c].args[1],
> ! entropy_sources[c].args[2],
> entropy_sources[c].badness);
> #endif
>
> if (entropy_sources[c].badness > 0)
> --- 227,235 ----
> } else {
> /* FIXME: turn this off later */
> #if 1
> ! debug("Command '%s' disabled (badness %d)",
> ! entropy_sources[c].cmd,
> ! entropy_sources[c].badness);
> #endif
>
> if (entropy_sources[c].badness > 0)
> ***************
> *** 324,331 ****
> close(devnull);
>
> execv(src->path, (char**)(src->args));
> ! debug("(child) Couldn't exec '%s %s %s': %s",
> src->path,
> ! src->args[1], src->args[2],
> strerror(errno));
> src->badness = src->sticky_badness = 128;
> _exit(-1);
> default: /* Parent */
> --- 326,333 ----
> close(devnull);
>
> execv(src->path, (char**)(src->args));
> ! debug("(child) Couldn't exec '%s': %s", src->cmd,
> ! strerror(errno));
> src->badness = src->sticky_badness = 128;
> _exit(-1);
> default: /* Parent */
> ***************
> *** 372,378 ****
>
> case -1:
> default:
> ! error("Command '%s %s': select() failed: %s",
> src->path, src->args[1],
> strerror(errno));
> error_abort = 1;
> break;
> --- 374,380 ----
>
> case -1:
> default:
> ! error("Command '%s': select() failed: %s", src->cmd,
> strerror(errno));
> error_abort = 1;
> break;
> ***************
> *** 386,393 ****
> close(p[0]);
>
> if (waitpid(pid, &status, 0) == -1) {
> ! error("Couldn't wait for child '%s %s' completion: %s",
> src->path,
> ! src->args[1], strerror(errno));
> /* return(-1); */ /* FIXME: (ATL) this doesn't feel right */
> return(0.0);
> }
> --- 388,395 ----
> close(p[0]);
>
> if (waitpid(pid, &status, 0) == -1) {
> ! error("Couldn't wait for child '%s' completion: %s",
> src->cmd,
> ! strerror(errno));
> /* return(-1); */ /* FIXME: (ATL) this doesn't feel right */
> return(0.0);
> }
> ***************
> *** 398,404 ****
> /* closing p[0] on timeout causes the entropy command to
> * SIGPIPE. Take whatever output we got, and mark this
> command
> * as slow */
> ! debug("Command %s %s timed out", src->path, src->args[1]);
> src->sticky_badness *= 2;
> src->badness = src->sticky_badness;
> return(total_bytes_read);
> --- 400,406 ----
> /* closing p[0] on timeout causes the entropy command to
> * SIGPIPE. Take whatever output we got, and mark this
> command
> * as slow */
> ! debug("Command '%s' timed out", src->cmd);
> src->sticky_badness *= 2;
> src->badness = src->sticky_badness;
> return(total_bytes_read);
> ***************
> *** 408,419 ****
> if (WEXITSTATUS(status)==0) {
> return(total_bytes_read);
> } else {
> ! debug("Exit status was %d", WEXITSTATUS(status));
> src->badness = src->sticky_badness = 128;
> return (0.0);
> }
> } else if (WIFSIGNALED(status)) {
> ! debug("Returned on uncaught signal %d !", status);
> src->badness = src->sticky_badness = 128;
> return(0.0);
> } else
> --- 410,422 ----
> if (WEXITSTATUS(status)==0) {
> return(total_bytes_read);
> } else {
> ! debug("Exit status of '%s' was %d", src->cmd,
> ! WEXITSTATUS(status));
> src->badness = src->sticky_badness = 128;
> return (0.0);
> }
> } else if (WIFSIGNALED(status)) {
> ! debug("Returned on uncaught signal %d for '%s'!", status,
> src->cmd);
> src->badness = src->sticky_badness = 128;
> return(0.0);
> } else
> ***************
> *** 614,619 ****
> --- 617,627 ----
> linenum, cmdfilename);
> continue;
> }
> +
> + /* save copy of command args for use in debug() */
> + cp = (char*)xmalloc(strlen(cmd)+1);
> + strcpy(cp, cmd);
> + entcmd[cur_cmd].cmd = cp;
>
> /* split the command args */
> cp = strtok(cmd, WHITESPACE);
>
>
>
Marc G. Fournier marc.fournier at acadiau.ca
Senior Systems Administrator Acadia University
"These are my opinions, which are not necessarily shared by my employer"
More information about the openssh-unix-dev
mailing list